DENSE_RANK 함수의 SQL 결과를 단일 문자열로 "연결"해야하는 상황이 있는데,이 작업을 수행하는 다른 SQL 함수를 인식하지 못합니다.SQL에서 문자열 결과 연결 DENSE_Rank
ID Info Total Rank
1 A 2 1
1 B 2 1
1 C 1 2
2 D 2 1
2 E 1 2
3 F 1 1
는 내가 달성하고자하는 결과이다 :
문제는 예를 들어, 그래서 내가 예상 할 수 DENSE_RANK 함수에서 같은 순위에 대한 여러 행으로 끝날 것입니다 즉 ID 1 내가 단일 문자열로 "를 연결할"할 같은 순위로이 정보의 있었기 때문에, 그래서 다음과 같습니다 (쉼표로 구분) :
ID Info1 Info2
1 A,B C
2 D E
3 F G
현재 DENSE_RANK의 결과를 제공하는 다음 코드를 가지고 있지만 "연결 문자열"이있는 곳에서 최종 결과 세트를 얻는 방법을 알아 내려고 노력하고 있습니다. 몇 가지 다른 기술을 시도했습니다. stackoverflow를 통해 좋은 모습을 보였지만 제대로 작동 할 수있는 방법을 찾지 못했습니다.
SELECT t1.ID
,t2.Info1
,t3.Info2
,t4.Info3
FROM table1 t1 WITH (NOLOCK)
LEFT JOIN (SELECT t2.ID
,t2.Info AS Info1
,t2.Total
FROM (SELECT t2.ID
,t2.Info
,t2.Total
,DENSE_RANK() OVER (PARTITION BY t2.ID ORDER BY t2.Total DESC) AS DENSE_RANK
FROM table2 t2 WITH (NOLOCK)) t2
WHERE DENSE_RANK = 1) AS t2 ON t1.ID = t2.ID
LEFT JOIN (SELECT t3.ID
,t3.Info AS Info2
,t3.Total
FROM (SELECT t3.ID
,t3.Info
,t3.Total
,DENSE_RANK() OVER (PARTITION BY t3.ID ORDER BY t3.Total DESC) AS DENSE_RANK
FROM table3 t3 WITH (NOLOCK)) t3
WHERE DENSE_RANK = 2) AS t3 ON t1.ID = t3.ID
LEFT JOIN (SELECT t4.ID
,t4.Info AS Info3
,t4.Total
FROM (SELECT t4.ID
,t4.Info
,t4.Total
,DENSE_RANK() OVER (PARTITION BY t4.ID ORDER BY t4.Total DESC) AS DENSE_RANK
FROM table4 t4 WITH (NOLOCK)) t4
WHERE DENSE_RANK = 3) AS t4 ON t1.ID = t4.ID
ORDER BY t1.ID ASC
감사합니다, 나는 그것을 그러나 시도 준 나는 결국 예를 들어, Info1에 대한 결과로 다음과 같습니다. A, B, A, B, A, B, D, D, F –
위의 대답을 참조하십시오. STUFF 쿼리에 DISTINCT를 추가하여 얻었습니다. 감사. –
당신은 환영합니다 :) – Nithesh