Я ищу, чтобы создать столбец на основе флага (например, True / false-1/0) - PullRequest
0 голосов
/ 02 мая 2019

Итак, проблема, с которой я сталкиваюсь, заключается в том, что когда я создаю новую таблицу или представление на основе таблицы, мне нужен столбец с именем «IsLatest», чтобы показать, является ли эта запись самой последней в таблице или нет на основе столбца «Дата получения», которыйбудет автоматически заполнен через ssis.Столбцы ID_Number и AccountName будут иметь несколько дубликатов, но столбец ReceivedDate будет отличаться.Поэтому, когда аналитик смотрит на таблицу, все, что ему нужно сделать, это прочитать флаг Islatest

1 Ответ

0 голосов
/ 02 мая 2019

Вы можете использовать общее табличное выражение, чтобы сначала найти самую последнюю дату, а затем использовать его в операторе 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
...