以下查询:
SELECT i.Item_ID
FROM AGR_Header ah
LEFT JOIN AGR_Detail ad
ON ad.AGR_Header_RecID = ah.AGR_Header_RecID
LEFT JOIN IV_Item i
ON i.IV_Item_RecID = ad.IV_Item_RecID
显示以下结果:
a4 black usage page count
a4 colour usage page count
a4 black usage page count
a4 colour usage page count
a4 black usage page count
a4 colour usage page count
a4 black usage page count
a4 colour usage page count
有没有办法为每个Item_ID创建一个列,所以它显示如下:
A4 Black A4 Colour
a4 black usage page count a4 colour usage page count
a4 black usage page count a4 colour usage page count
a4 black usage page count a4 colour usage page count
a4 black usage page count a4 colour usage page count
我已经阅读过使用ROW_NUMBER为每个Item_ID分配顺序号或使用PIVOT ......不熟悉这些或任何其他方式来完成此任务,所以任何帮助都会受到赞赏。
干杯
答案 0 :(得分:3)
如果您的输出与您提到的一样,那么您只需执行以下操作即可获得所需的输出:
SELECT
ISNULL(a4b.Item_ID, '') 'A4 Black',
ISNULL(a4c.Item_ID, '') 'A4 Color'
FROM
(
SELECT i.Item_ID, ROW_NUMBER() OVER(ORDER BY i.Item_ID ASC) 'RowNum'
FROM AGR_Header ah
LEFT JOIN AGR_Detail ad
ON ad.AGR_Header_RecID = ah.AGR_Header_RecID
LEFT JOIN IV_Item i
ON i.IV_Item_RecID = ad.IV_Item_RecID
WHERE i.Item_ID LIKE 'a4 black%'
) AS a4b
FULL OUTER JOIN
(
SELECT i.Item_ID, ROW_NUMBER() OVER(ORDER BY i.Item_ID ASC) 'RowNum'
FROM AGR_Header ah
LEFT JOIN AGR_Detail ad
ON ad.AGR_Header_RecID = ah.AGR_Header_RecID
LEFT JOIN IV_Item i
ON i.IV_Item_RecID = ad.IV_Item_RecID
WHERE i.Item_ID LIKE 'a4 color%'
) AS a4c
ON a4b.RowNum = a4c.RowNum
OUTER JOIN将处理a4 black和a4颜色的每个条目数不同的情况。