2017-07-03 246 views
0

我有以下SQL查詢,需要將其轉換到Sybase的Sybase替代的DENSE_RANK()OVER(PARTITION BY

SELECT prd_name, DENSE_RANK() OVER (PARTITION BY prd_cat ORDER BY createddt) FROM product 

表腳本:

CREATE table product(prd_name varchar(10), 
        prd_cat varchar(10), 
        createddt datetime) 
INSERT INTO product values('Product 1', 'Toy', CONVERT(DATE,'2017-05-30')) 
INSERT INTO product values('Product 2', 'Toy', CONVERT(DATE,'2017-05-31')) 
INSERT INTO product values('Product 3', 'Toy', CONVERT(DATE,'2017-05-31')) 
INSERT INTO product values('Product 4', 'Toy1', CONVERT(DATE,'2017-05-29')) 

版本:Adaptive Server Enterprise的/ 15.7

回答

0

某些版本的Sybase支持窗口函數我假設你沒有這樣的版本

您可以將其替換爲相關的子查詢:

SELECT p.prd_name, 
     (SELECT COUNT(DISTINCT createddt) 
     FROM product p2 
     WHERE p2.prd_cat = p.prd_cat AND p2.createddt < p.createddt 
     ) 
FROM product p; 
+0

Gordon,感謝您的快速響應。它在一分鐘內解決了我的問題 – Kathir

相關問題