Попытка перенести максимальную дату в столбец вместе со статусом дела - PullRequest
0 голосов
/ 16 июня 2020

Я работаю над набором данных, где каждый кейс содержит несколько строк со статусом, который он прошел, я пытаюсь развернуть max(time_stamp) моего final_decision_time и final_status кейса Группой.

Я пытаюсь сделать что-то вроде этого, и я застрял при транспонировании строки в столбец со статусом

Select [ro #],WCC_Approv_Decis,CSE_Approv_Decis,RSM_Approv_Decis,FSD_Approv_Decis,max(case when WCC_Approv_Decis in ('Rejected','Approved')  Then  WCC_Approv_Decis_Date end) over (partition by [ro #]) as WCC_Approve_Date,

 max(case when CSE_Approv_Decis in ('Rejected','Approved')  Then  CSE_Approv_Decis_Date end) over (partition by [ro #]) as CSE_Approve_Date,
 max(case when RSM_Approv_Decis in ('Rejected','Approved')  Then  RSM_Approv_Decis_Date end) over (partition by [ro #]) as RSM_Approve_Date,
 max(case when FSD_Approv_Decis in ('Rejected','Approved')  Then  FSD_Approv_Decis_Date end) over (partition by [ro #]) as FSD_Approve_Date
 from #FinalResultset where [ro #] in ('397142')
+-----------+------------------+-----------------------+------------------+-----------------------+------------------+-----------------------+------------------+-----------------------+
|   Case    | WCF_Approv_Decis | WCF_Approv_Decis_Date | CSA_Approv_Decis | CSA_Approv_Decis_Date | RSA_Approv_Decis | RSA_Approv_Decis_Date | FSB_Approv_Decis | FSB_Approv_Decis_Date |
+-----------+------------------+-----------------------+------------------+-----------------------+------------------+-----------------------+------------------+-----------------------+
|    386646 |                  | NULL                  |                  | NULL                  | Approved         | 3/3/2020 15:24        |                  | NULL                  |
|    386646 |                  | NULL                  | Approved         | 2/27/2020 16:37       |                  | NULL                  |                  | NULL                  |
|    386646 | Rejected         | 2/19/2020 17:30       |                  | NULL                  |                  | NULL                  |                  | NULL                  |
|    397142 |                  | NULL                  |                  | NULL                  | Approved         | 5/29/2020 18:58       |                  | NULL                  |
|    397142 |                  | NULL                  | Approved         | 5/29/2020 18:34       |                  | NULL                  |                  | NULL                  |
|    397142 | Rejected         | 5/29/2020 13:40       |                  | NULL                  |                  | NULL                  |                  | NULL                  |
+-----------+------------------+-----------------------+------------------+-----------------------+------------------+-----------------------+------------------+-----------------------+

Я пытаюсь получить дополнительные столбцы с final_decision_date со статусом случая, как показано ниже

+-----------+------------------+-----------------------+------------------+-----------------------+------------------+-----------------------+------------------+-----------------------+---------------+---------------------+
|   Case    | WCF_Approv_Decis | WCF_Approv_Decis_Date | CSA_Approv_Decis | CSA_Approv_Decis_Date | RSA_Approv_Decis | RSA_Approv_Decis_Date | FSB_Approv_Decis | FSB_Approv_Decis_Date | Fina_Decision | Final_Decision_Date |
+-----------+------------------+-----------------------+------------------+-----------------------+------------------+-----------------------+------------------+-----------------------+---------------+---------------------+
|    386646 |                  | NULL                  |                  | NULL                  | Approved         | 3/3/2020 15:24        |                  | NULL                  | Approved      | 3/3/2020 15:24      |
|    386646 |                  | NULL                  | Approved         | 2/27/2020 16:37       |                  | NULL                  |                  | NULL                  | Approved      | 3/3/2020 15:24      |
|    386646 | Rejected         | 2/19/2020 17:30       |                  | NULL                  |                  | NULL                  |                  | NULL                  | Approved      | 3/3/2020 15:24      |
|    397142 |                  | NULL                  |                  | NULL                  | Approved         | 5/29/2020 18:58       |                  | NULL                  | Approved      | 5/29/2020 18:58     |
|    397142 |                  | NULL                  | Approved         | 5/29/2020 18:34       |                  | NULL                  |                  | NULL                  | Approved      | 5/29/2020 18:58     |
|    397142 | Rejected         | 5/29/2020 13:40       |                  | NULL                  |                  | NULL                  |                  | NULL                  | Approved      | 5/29/2020 18:58     |
+-----------+------------------+-----------------------+------------------+-----------------------+------------------+-----------------------+------------------+-----------------------+---------------+---------------------+

Любая помощь очень ценится

1 Ответ

0 голосов
/ 16 июня 2020

Может быть помощь CTE, я предполагаю, что если нет решения, XXX_Decis является пустой строкой, а XXX_Decis_Date имеет значение NULL, и только одно из этого заполнено:

WITH Decisions AS (
  SELECT
    [Case],
    COALESCE (WCF_Approv_Decis_Date, CSA_Approv_Decis_Date, RSA_Approv_Decis_Date, FSB_Approv_Decis_Date) AS Approv_Decis_Date,
    CONCAT(WCF_Approv_Decis, CSA_Approv_Decis, RSA_Approv_Decis, FSB_Approv_Decis ) AS Approv_Decis
  FROM XXX
), FinalDecisions AS (
  SELECT 
    [Case],
    Approv_Decis AS Final_Decision,
    Approv_Decis_Date AS Final_Decision_Date
  FROM Decisions
  WHERE Approv_Decis_Date = MAX(Approv_Decis_Date) OVER (PARTITION BY [Case])
)

SELECT 
  XXX.Case, 
  WCF_Approv_Decis, 
  WCF_Approv_Decis_Date, 
  CSA_Approv_Decis, 
  CSA_Approv_Decis_Date, 
  RSA_Approv_Decis, 
  RSA_Approv_Decis_Date, 
  FSB_Approv_Decis, 
  FSB_Approv_Decis_Date, 
  Final_Decision, 
  Final_Decision_Date
FROM XXX
LEFT JOIN FinalDecisions 
  ON XXX.Case = FinalDecisions.Case
...