簡體   English   中英

如何在滿足條件時從另一個表中獲取值的表中創建列,但如果條件失敗則分配不同的值

[英]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]

表 2 日期列包含 2018 年的所有日期。

;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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM