如何在SQL中转换结果以便我可以看到计数和单个条目?

时间:2015-02-11 16:20:35

标签: sql oracle11g count pivot

我试图从一个包含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

1 个答案:

答案 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