Один и тот же аккаунт отличается другим статусом, чем другой, другой статус Как это сделать в T-SQl - PullRequest
0 голосов
/ 05 июля 2018

У одного и того же аккаунта другой статус, чем у другого, такой же статус. Как это сделать в T-SQl

Account Status
1000001185  A
1000001185  E 
1000001185  E 
1000001185  D
1000001777  E 
1000001777  E 
1000001777  E 
1000001185  E 

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Попробуйте, я использовал функцию Lead ()

;WITH CTE(Account, [Status])
AS
(
SELECT '1000001185','A' UNION ALL
SELECT '1000001185','E' UNION ALL 
SELECT '1000001185','E' UNION ALL 
SELECT '1000001185','D' UNION ALL
SELECT '1000001777','E' UNION ALL 
SELECT '1000001777','E' UNION ALL 
SELECT '1000001777','E' UNION ALL 
SELECT '1000001185','E' 
)
SELECT Account,[Status],CASE WHEN [Status]<>LEAD([Status],1)OVER(PARTITION BY Account ORDER BY Account)
            THEN 'Other' ELSE [Status] END [NewStatus]
 FROM Cte 

 ORDER BY cte.[Status]

Результат

 Account    Status       NewStatus
 -------------------------------------
1000001185      A           A
1000001185      D           Other
1000001185      E           Other
1000001185      E           E
1000001185      E           Other
1000001777      E           E
1000001777      E           E
1000001777      E           E
0 голосов
/ 05 июля 2018

Вы можете сделать:

select Account, (case when min(Status) = max(Status) 
                      then min(Status) 
                      else 'other' 
                  end)
from table t
group by Account;

Здесь - это SQL-скрипта, показывающая, что это решение верное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...