我正在从小提琴示例中创建一个交叉表视图。本质上,我收到了一张带有Customers
,Vendors
和的桌子Product Type
。我想生成一个视图,其中供应商是行,列是按产品类型划分的总销售额。
结构是
CustomerID Vendor ProductType
--------------------------------
1 A Type1
2 A Type2
3 B Type1
4 A Type2
我想要的最终结果是:
Vendor Type1 Type2
---------------------
A 1 2
B 1 0
/* Count the number of sales by Product Type for each Vendor. */
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(ProductType)
from MyTable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT Vendor,' + @cols + '
from MyTable
pivot
(
count (ProductType)
for ProductType in (' + @cols + ')
) p
ORDER BY Vendor ASC'
execute(@query)
最终结果是每个供应商的多行,而不是汇总计数的单行。
例如
Vendor Type1 Type2
---------------------
A 1 0
A 0 1
B 1 0
A 0 1
有没有人知道我可能错过了这个查询?
谢谢。