1
이 쿼리를 사용하여 뷰를 만들고 있습니다. 이 쿼리는 작동하지만 각 결합 테이블에서 반환 된 각 값에 대해 2 행이됩니다. 1 행을 얻으려면 어떻게해야합니까?SQL Union 하위 쿼리 고유 ID - 결과가 두 번 반환됩니다.
ROW_NUMBER() OVER (ORDER BY A.ID) AS ID
부분은 고유 한 ID가 필요하기 때문입니다. (그렇게 할 수있는 더 좋은 방법이 있나요?) SELECT DISTINCT
대신 단지 SELECT
의
SELECT Row_number()
OVER (
ORDER BY A.ID) AS ID,
ALIAS_CKT_ID,
peg_site_id,
circuit_id,
LOC_A_ADDRESS,
CKT_ORDER,
CKT_STATUS,
PROD_DESCRIPTION,
customer_code,
CUSTOMER_ID,
CUSTOMER_NAME,
CKT_LOCATION_Z,
network,
market,
Source
FROM (SELECT circ.id,
NULL AS 'ALIAS_CKT_ID',
peg_site_id,
circuit_id AS 'CIRCUIT_ID',
NULL AS 'LOC_A_ADDRESS',
NULL AS 'CKT_ORDER',
NULL AS 'CKT_STATUS',
NULL AS 'PROD_DESCRIPTION',
circ.customer_code,
NULL AS 'CUSTOMER_ID',
cust.company AS 'CUSTOMER_NAME',
NULL AS 'CKT_LOCATION_Z',
network,
Cast(circ.market AS VARCHAR(max)) AS market,
'PEG' AS 'Source'
FROM dbo.peg_circuit_network_data circ
LEFT JOIN dbo.peg_customers cust
ON cust.customer_code = circ.customer_code
UNION ALL
SELECT cv.id,
ALIAS_CKT_ID,
CKT_LOCATION_Z AS 'peg_site_id',
CIRCUIT_ID,
LOC_A_ADDRESS,
CKT_ORDER,
CKT_STATUS,
PROD_DESCRIPTION,
cv.CUSTOMER_CODE AS customer_code,
CUSTOMER_ID,
cust.company AS 'CUSTOMER_NAME',
CKT_LOCATION_A,
NULL AS 'network',
NULL AS 'market',
FROM dbo.tc_cv_circuit_network cv
LEFT JOIN dbo.peg_customers cust
ON cust.customer_code = cv.customer_code
UNION ALL
SELECT NULL AS 'id',
NULL AS 'ALIAS_CKT_ID',
a_peg_site_id AS 'peg_site_id',
peg_circuit_id AS 'CIRCUIT_ID',
a_address AS 'LOC_A_ADDRESS',
NULL AS 'CKT_ORDER',
order_status AS 'CKT_STATUS',
product_type AS 'PROD_DESCRIPTION',
customer_code AS customer_code,
NULL AS CUSTOMER_ID,
customer_short AS 'CUSTOMER_NAME',
NULL AS CKT_LOCATION_A,
NULL AS 'network',
Cast(market AS VARCHAR(max)) AS market,
FROM Openquery(crltoolsp01,
LEFT JOIN crm ON cpm.customer_short=crm.company
WHERE cpm.product_type="Dark Fiber";')) A
아마도 LEFT JOIN이 문제 일 수 있습니다. 결합은 다중화처럼 동작합니다. –
데이터베이스 관리자 프로그램 (MySQL, SQL Server 등)에 대한 태그를 추가하십시오. 특히'Row_Number() '의 경우 이것은 중요 할 수 있습니다. – Smandoli
아마도 그렇지 않습니다. UNION ALL 대신 UNION을 시도하십시오. UNION의 결과물은 뚜렷한 결과 집합입니다. –