기존 SQL 쿼리를 수정 중입니다. 문제는 테이블의 설명을 기존 데이터에 추가하려고합니다. 그림에 표시된 것처럼 하위 쿼리를 추가했지만 반환 데이터 집합을 변경하는 것으로 보입니다. subquery를 사용하여 올바른 데이터를 얻는 방법을 제안 할 수 있습니까?조인의 SQL 하위 쿼리
SELECT TOP 100
ROW_NUMBER() OVER (ORDER BY LTRIM(VW_POLINDEX.SYMBOL) ASC, LTRIM(VW_POLINDEX.POLNUM) ASC, LTRIM(VW_POLINDEX.MODULE) ASC) AS RowNum
,VW_POLINDEX.POLNUM
,VW_POLINDEX.SYMBOL
,VW_POLINDEX.MODULE
,
--Subquery: 1 This subquery will fetch the description based on the pol details
(SELECT TOP 1
reasonamendedCd
FROM SHPolicyAmendmentHistory SH
WHERE SH.PolicyNbr = VW_POLINDEX.POLNUM
AND SH.PolicySymbolCd = VW_POLINDEX.SYMBOL
AND SH.PolicyModuleNbr = Module
ORDER BY amendmentnbr DESC
) AS POLSECRIPTION
,VW_POLINDEX.CANCELLD
FROM VW_POLINDEX WITH (NOLOCK)
INNER JOIN LINE_OF_BUS_LIT WITH (NOLOCK) ON VW_POLINDEX.LOB = LINE_OF_BUS_LIT.LOB_CD
INNER JOIN POL_STATUS_LIT WITH (NOLOCK) ON VW_POLINDEX.TYPEACT = POL_STATUS_LIT.POL_STATUS_CD
WHERE (CASE VW_POLINDEX.MODULE
WHEN 0 THEN VW_POLINDEX.SYMBOL + '0'
ELSE VW_POLINDEX.SYMBOL + '1'
END) NOT IN ('RJD1', 'RJH1')
AND VW_POLINDEX.LOB = 'HP'
전류 출력 :
+------+-------+------+------+-------------+---------+
|RowNum|POLNUM |SYMBOL|MODULE|POLSECRIPTION|CANCELLD |
+------+-------+------+------+-------------+---------+
|3 |0040026|CCS |2 |<NULL> |9/12/2006|
+------+-------+------+------+-------------+---------+
|4 |0040026|CCS |3 |<NULL> |9/12/2010|
+------+-------+------+------+-------------+---------+
|2 |0040026|CCS |1 |<NULL> |9/12/2006|
+------+-------+------+------+-------------+---------+
|7 |2000010|CCS |2 |XM |1/1/1753 |
+------+-------+------+------+-------------+---------+
|8 |2000010|CCS |3 |CPP |1/1/1753 |
+------+-------+------+------+-------------+---------+
|12 |2000025|CCS |0 |RN |1/1/1753 |
+------+-------+------+------+-------------+---------+
|16 |2000025|CCS |4 |RN |1/1/1753 |
+------+-------+------+------+-------------+---------+
|6 |2000010|CCS |1 |IC |1/1/1753 |
+------+-------+------+------+-------------+---------+
|20 |2000029|CCS |1 |RN |1/1/1753 |
+------+-------+------+------+-------------+---------+
|10 |2000010|CCS |5 |CM |1/1/1753 |
+------+-------+------+------+-------------+---------+
|11 |2000010|CCS |6 |Z |7/28/2013|
+------+-------+------+------+-------------+---------+
|24 |2000029|CCS |5 |RN |1/1/1753 |
+------+-------+------+------+-------------+---------+
|14 |2000025|CCS |2 |RN |1/1/1753 |
+------+-------+------+------+-------------+---------+
예상 출력 (일부 행이 이전 출력에서 누락도 아닌 하위 쿼리를 추가 한 후 정렬됩니다) :
+------+-------+------+------+-------------+---------+
|RowNum|POLNUM |SYMBOL|MODULE|POLSECRIPTION|CANCELLD |
+------+-------+------+------+-------------+---------+
|1 |0040026|CCS |0 |test |9/12/2006|
+------+-------+------+------+-------------+---------+
|2 |0040026|CCS |1 |test |9/12/2006|
+------+-------+------+------+-------------+---------+
|3 |0040026|CCS |2 |test |9/12/2006|
+------+-------+------+------+-------------+---------+
|4 |0040026|CCS |3 |test |9/12/2010|
+------+-------+------+------+-------------+---------+
|5 |2000010|CCS |0 |test |1/1/1753 |
+------+-------+------+------+-------------+---------+
|6 |2000010|CCS |1 |test |1/1/1753 |
+------+-------+------+------+-------------+---------+
|7 |2000010|CCS |2 |test |1/1/1753 |
+------+-------+------+------+-------------+---------+
|8 |2000010|CCS |3 |test |1/1/1753 |
+------+-------+------+------+-------------+---------+
|9 |2000010|CCS |4 |test |1/1/1753 |
+------+-------+------+------+-------------+---------+
|10 |2000010|CCS |5 |test |1/1/1753 |
+------+-------+------+------+-------------+---------+
|11 |2000010|CCS |6 |test |7/28/2013|
+------+-------+------+------+-------------+---------+
|12 |2000025|CCS |0 |test |1/1/1753 |
+------+-------+------+------+-------------+---------+
|13 |2000025|CCS |1 |test |1/1/1753 |
+------+-------+------+------+-------------+---------+
|14 |2000025|CCS |2 |test |1/1/1753 |
+------+-------+------+------+-------------+---------+
|15 |2000025|CCS |3 |test |1/1/1753 |
+------+-------+------+------+-------------+---------+
|16 |2000025|CCS |4 |test |1/1/1753 |
+------+-------+------+------+-------------+---------+
구문이 SQL Server이므로이 태그를 제거했습니다. –
출력이 정렬되지 않았기 때문에 출력이 정렬되지 않으므로 'SQL SERVER'가 원하는대로 반환 될 수 있습니다. 'ORDER BY' 절을 추가하십시오. 그리고 거기에'NOLOCK'을 원하십니까? –
그래, 결과를 정렬 할 수 있지만 하위 쿼리를 추가하면 잘못된 데이터가 표시되고 정렬 후에도 일부 행이 누락됩니다. 또한 SHPolicyAmendmentHistory에서 상위 1 개를 가져와서 수정 날짜를 기반으로해야하므로 SHPolicyAmendmentHistory의 모든 열을 가져옴에 따라 조인이 도움이되는지 확실하지 않습니다. – user2814819