2017-04-11 25 views
0

我有產生這樣的輸出SQL查詢:測序數據爲1,2,3通過客戶和產品

Acct Product   Date 
XXXX RSP  2000-02-14 00:00:00.000 
XXXX TFSA 2012-04-05 00:00:00.000 
XXXX CASH 2000-02-14 00:00:00.000 
YYYY RSP  2001-01-01 00:00:00.000 
YYYY TFSA 2011-04-05 00:00:00.000 
YYYY CASH 2001-01-01 00:00:00.000 

我希望能夠重新命名的日期欄是這樣的:

Acct Product  Date 
XXXX RSP   1 
XXXX TFSA   2 
XXXX CASH   1 
YYYY RSP   1 
YYYY TFSA   2 
YYYY CASH   1 

基本上自購買RSP和現金日期是相同的,並首先我希望它被標記爲1,爲第三個產品購買,並且因爲它是一個數據後來我希望它被標記爲2.

我的查詢很f AR是:

With cte as(
Select Left(account,6) as 'CID', 


      CASE WHEN RIGHT(ACCT.ACCOUNT, 1) IN ('P', 'S', 'X', 'U', 'T') THEN 'RSP'     
        WHEN RIGHT(ACCT.ACCOUNT, 1) IN ('J', 'K') THEN 'TFSA'    
        WHEN RIGHT(ACCT.ACCOUNT, 1) IN ('E', 'G', 'L', 'F', 'H', 'M') THEN 'MARGIN'    
        WHEN RIGHT(ACCT.ACCOUNT, 1) IN ('A', 'B') THEN 'CASH' 
        WHEN RIGHT(ACCT.ACCOUNT, 1) IN ('V')  THEN 'RESP' 
        WHEN RIGHT(ACCT.ACCOUNT, 1) IN ('N')  THEN 'RDSP' 
        WHEN RIGHT(ACCT.ACCOUNT, 1) IN ('W' , 'V') THEN 'SWEEP' 
      End as 'product', 
Min(acct_open_date) as 'Date' 
FROM WF_PM_ACCT_DB ACCT 
WHERE Acct_Closing_Date IS NULL 
GROUP BY LEFT(ACCOUNT,6), RIGHT(ACCT.ACCOUNT, 1) 

) 

select distinct CID, Product, 
Min(date) as 'Date' from cte 
group by CID, product 
order by CID 
+0

SQL服務器同治工作室2012和SQL Server 2012的 –

回答

1
SELECT Acct,Product,rn AS Date  
    FROM  
    (
     SELECT *, 
       DENSE_RANK() OVER (PARTITION BY Acct ORDER BY Date) AS rn 
     FROM WF_PM_ACCT_DB 
    ) Z; 
+0

這並不完全奏效。我更新了我的問題以反映我真正需要的東西。我感謝幫助。謝謝。 –

+0

你的問題是有限的。使用密集等級函數來分配等級值。檢查上面的答案。 – Teja

+0

工作。謝謝!! –

相關問題