我希望基于标志创建一个列(例如True / false-1 / 0)

时间:2019-05-01 21:19:13

标签: sql sql-server-2012

所以我遇到的问题是,当我基于该表创建新表或视图时,我需要一个名为“ IsLatest”的列以根据“接收日期”列显示该记录是否为表中的最新记录,将通过ssis自动填充。 ID_Number和AccountName列将具有多个重复项,但ReceivedDate列将有所不同。因此,当分析师查看表格时,他们要做的就是读取Islatest标志

1 个答案:

答案 0 :(得分:0)

您可以使用公用表格表达式首先查找最新日期,然后在case语句中使用它来创建表格视图。

;WITH cteMaxRecievedDate(acctno, MaxRecievedDate) AS
(
SELECT ID_Number, AccountName, max(RecievedDate) 
FROM Table GROUP BY ID_Number, AccountName
)    
SELECT  t1.ID_Number, t1.AccountName, 
CASE WHEN t2.MaxRecievedDate = t1.RecievedDate THEN 'true' ELSE 'false' END AS IsLatest    
FROM table t1
INNER JOIN cteMaxRecievedDateon t2 ON t1.ID_Number = t2.ID_Number
AND t1.AccountName = t2.AccountName 
GROUP BY t1.ID_Number, t1.AccountName, t1.RecievedDate, t2.MaxRecievedDate