[英]Create a column and fill it with a certain value if another condition in a different table is met?
[英]How to create column in a table which takes values from another table when the condition is met but assigns a different value if condition fails
我有表格,例如:表 1 有一列包含日期,另一列包含與該日期相關的一些數值。 它在 1-jan-2018 到 31-dec-2018 之間有隨機日期。 我正在嘗試創建另一個具有類似結構的表(2 個字段日期和數值),但日期應該包含 2018 年所有天的條目,並且在第二列中應該有“-1”表示不存在的日期在第一個表中,如果日期匹配,則為第一個表中的數值。
----這給了我第二個表中的日期---
;WITH CTE AS
(
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) - 1 AS [Incrementor]
FROM [master].[sys].[columns] sc1
CROSS JOIN [master].[sys].[columns] sc2
)
SELECT DATEADD(DAY, cte.[Incrementor], '2018-01-01') as [date]
into [Table 2]
FROM CTE
WHERE DATEADD(DAY, cte.[Incrementor], '2018-01-01') < '2018-12-31'
然后我使用case語句生成表2中的第2列但沒有成功。
select [Table 2].[date],
case
when ([Table 2].[date] = [table 1].[date]
then [Table1].[numericvalue] else '-1')
end as [NewNumericValue]
from
[Table1]
inner join
[table2]
on [table 1].[date] = [table 2].[date]
;WITH CTE AS
(
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) - 1 AS [Incrementor]
FROM [master].[sys].[columns] sc1
CROSS JOIN [master].[sys].[columns] sc2
)
select [date],isnull([Numericvalue],-1) from
(SELECT DATEADD(DAY, cte.[Incrementor], '2018-01-01') as [date]
FROM CTE
WHERE DATEADD(DAY, cte.[Incrementor], '2018-01-01')<'2018-12-31') as Table2
left join
[Table1]
on [Table2].[date] = [Table1].[date]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.