我试图从一个包含4列的表中获取计数。我在pivot_data中包含的2是'ocode'和'cname',其他2与客户详细信息有关。我试图显示每个“cname”(产品)有多少个“ocode”(选项),因此产品和选项可以在任意数量的组合中出现任意次数。
我目前有以下内容:
WITH pivot_data AS(
SELECT ocode,cname
FROM mi17
)
SELECT *
FROM pivot_data
PIVOT(
COUNT(ocode)
FOR cname
IN ('Dog','Cat','Horse')
);
这导致以下
Dog Cat Horse
1 2 3
然而,八极管值将是不同的,例如'OC1','OC2','OC3' 。我想要的是:
Dog Cat Horse
OC1 1 1 1
OC2 0 1 0
OC3 0 0 2
答案 0 :(得分:0)
您可以使用Group by
并汇总以获得结果
SELECT ocode
,SUM(CASE WHEN cname='Dog' THEN 1 END) DOG
,SUM(CASE WHEN cname='Cat' THEN 1 END) CAT
,SUM(CASE WHEN cname='Horse' THEN 1 END) HORSE
FROM mi17
WHERE cname IN ('Dog','Cat','Horse')
GROUP BY ocode