【发布时间】:2014-06-05 14:05:21
【问题描述】:
我有 2 个如下所示的表:
人:
1 Andy Relative
2 Jim Friend
3 Anderson Friend
4 Pamela Relative
喜欢:
1 Pizza
1 Soda
2 Pizza
3 Soda
4 Pizza
4 Soda
我需要多个条件下的多个计数。如果它只是我正在寻找的一个字符串值,我可以 count(Case...) 但我需要包含这个查询,它会为每个 id 查找两个字符串:
计算披萨和苏打水的代码:
select relation, count(*)
from People p
join likes l1 on l1.id = p.id and pizzavalue = 'Pizza'
join likes l2 on l2.id = p.id and pizzavalue = 'Soda'
group by relation
这给了我:
Relative 2
Friend 0
然后我需要加入额外的列,这些列也按与计数的关系分组,例如只计算苏打水和披萨。这是预期的结果:
Relation | Pizza and Soda | Pizza Only | Soda Only
Relative 2 2 2
Friend 0 1 1
【问题讨论】:
-
likes 表只有这两个值(pizza 和 soda)还是更多?因为如果它只有这两个它会有点容易,对于未知的值,您将需要实现某种数据透视表。
-
是的,除了比萨饼和苏打水,还有多种价值,但这些是我所追求的……
标签: sql sql-server count group-by multiple-columns