2016-04-13 34 views
-1

Benim masa Girdi:Dinamik sorgu SQL Server

cd SEQ status 
DGH 1 Outstanding Requirement 
OTH 1 Outstanding Requirement 
OTH 2 O 
OTH 3 O 
OTH 1 Outstanding Requirement 
OTH 2 O 
OTH 3 O 
OTH 4 O 
OTH 5 O 

bahsettiğim sgeddes olarak

cd SEQ MyOrder 
DGH 1 DGH-1 
OTH 1 OTH-1 
OTH 2 OTH-1 
OTH 3 OTH-1 
OTH 1 OTH-2 
OTH 2 OTH-2 
OTH 3 OTH-2 
OTH 4 OTH-2 
OTH 5 OTH-2 
+2

Bir "sıralamayı" oluşturmak için başka bir sütuna ihtiyacınız var - bu olmadan, sonuçların sırasını garanti edemezsiniz. – sgeddes

cevap

2

aşağıda çıkışı ihtiyaç, istediğiniz sipariş kurmak için başka bir sütun gerekir. Ben böyle bir kimlik sütunu var kabul edeceğim:

id cd SEQ 
1 DGH 1 
2 OTH 1 
3 OTH 2 
4 OTH 3 
5 OTH 1 
6 OTH 2 
7 OTH 3 
8 OTH 4 
9 OTH 5 

bu göz önüne alındığında, istediğini elde etmek pencere işlevleri kullanabilirsiniz. Aşağıdaki tabloda tablonun "öğeler" olarak adlandırıldığını varsayalım.

SELECT cd, 
    SEQ, 
    DENSE_RANK() OVER (PARTITION BY items_grpd.cd ORDER BY items_grpd.grp) AS MyOrder 
FROM 
(
    SELECT id, 
     cd, 
     SEQ, 
     ROW_NUMBER() OVER(PARTITION BY cd ORDER BY id) - SEQ AS grp 
    FROM items 
) AS items_grpd 
ORDER BY items_grpd.id; 
+0

Teşekkürler .. Çalıştı – Uday