0
이 테이블에 대한 읽기 전용 액세스 권한이 있으며 부품 번호 당 이미지 레코드 수에 따라 부품 번호 레코드 수를 나열하는 쿼리를 작성해야합니다. 1 개 이미지와 부품의 개수 | | 2 개 이미지와 부품의 개수 | ...이 조합 쿼리의 결과를 피벗 팅합니까?
이이 VendorXYZ | 250 | 307
내가 만든
vendor_desc이 : 기본적으로, 나는 결과는 다음과 같이 포맷해야 하나의 열에 결과를 나열하지만 이미지 개수로 열을 구분해야하는이 조합 쿼리. 다음은 내 연합 검색어입니다.
SELECT vnd.vendor_desc,
Count(img1.[part#]) part
FROM [mytable].[dbo].[parts_images] AS img1
INNER JOIN mytable.dbo.vendors AS vnd
ON vnd.vendor_id = LEFT(img1.part#, 3)
INNER JOIN (SELECT img2.part#,
Count(img2.image_file)images
FROM [mytable].[dbo].[parts_images] AS img2
GROUP BY img2.part#
HAVING (Count(img2.image_file) = 1)) AS img2
ON img1.part# = img2.part#
GROUP BY vendor_desc
UNION
SELECT vnd.vendor_desc,
Count(img1.[part#]) part
FROM [mytable].[dbo].[parts_images] AS img1
INNER JOIN mytable.dbo.vendors AS vnd
ON vnd.vendor_id = LEFT(img1.part#, 3)
INNER JOIN (SELECT img2.part#,
Count(img2.image_file)images
FROM [mytable].[dbo].[parts_images] AS img2
GROUP BY img2.part#
HAVING (Count(img2.image_file) = 2)) AS img2
ON img1.part# = img2.part#
GROUP BY vendor_desc
ORDER BY vendor_desc
미리 감사드립니다. 당신의 도움에 대한
SELECT vnd.vendor_desc,
Count(img2.[part#]) part
,COUNT(img3.part#)
FROM mytable.[dbo].[parts_images] AS img1
INNER JOIN mytable.dbo.vendors AS vnd
ON vnd.vendor_id = LEFT(img1.part#, 3)
left JOIN (SELECT img2.part#,
Count(img2.image_file)images
FROM mytable.[dbo].[parts_images] AS img2
GROUP BY img2.part#
HAVING (Count(img2.image_file) = 1)) AS img2
ON img1.part# = img2.part#
left JOIN (SELECT img3.part#,
Count(img3.image_file)images
FROM mytable.[dbo].[parts_images] AS img3
GROUP BY img3.part#
HAVING (Count(img3.image_file) = 2)) AS img3
ON img1.part# = img3.part#
GROUP BY vendor_desc
order by vendor_desc
감사합니다, podiluska :
여기에 내가 찾던 그 결과에 대한 쿼리입니다!
네를 채우는 동적 SQL을 사용하여이 쿼리를 구성해야합니다 그렇게 잡은 나의 코멘트를 제거 . 이제 또 다른 질문이 있습니다 ...이 결과는 하나의 레코드 만 반환합니다. 결과가 각 vendor_desc를 반환하려면 – user955289
는'COUNT (vendor_desc) '대신'COUNT (part)'를 사용하십시오. – podiluska
Ok ... vendor_desc를 반환 할 수 있었지만 결과가 잘못되었습니다. 대부분의 레코드는 0을 반환합니다. 올바른 방향으로 향하고있는 것처럼 보입니다. 조금만 조정하면됩니다. – user955289