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

问题描述 投票:-2回答:1

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

sql sql-server-2012
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.