【发布时间】:2014-12-09 03:44:48
【问题描述】:
感谢您抽出宝贵时间阅读我的问题。
我想要做的是计算列(状态)中的所有行,并在结果中获得 2 个不同的计数列(每个可能值 1 或 0 一个)。
例如,我有一个包含这些行的表(称为“产品”):
ProductID |Subcategory| State |
101 | 201 | 1 |
102 | 201 | 1 |
103 | 201 | 1 |
104 | 202 | 0 |
105 | 202 | 0 |
106 | 203 | 1 |
107 | 203 | 0 |
108 | 203 | 0 |
状态:1=活动,0=非活动
所以我想得到这个:
|Subcategory| Active|Inactive|
| 201 | 3 | 0 |
| 202 | 0 | 2 |
| 202 | 1 | 2 |
你知道我该怎么做吗?
我正在尝试使用此查询并将结果插入到一个临时表中:
SELECT product.Subcategory,
COUNT(product.Subcategory) AS Products
FROM product,subcategory,category
WHERE product.Subcategory = subcategory.SubcategoryId
AND product.State = 1 or 0
AND subcategory.Category = category.CategoryId
GROUP BY product.Subcategory
但我只得到状态 = 1 或 0 的产品
我尝试了 LEFT JOIN,但无法获得所需的内容。
这就是我正在尝试的……(但它不起作用)
SELECT P.Subcategory,
COUNT(P.State)
FROM product AS P
LEFT JOIN(
SELECT product.Subcategory AS S,
COUNT(product.State) AS C
FROM product
WHERE product.State = 0
GROUP BY product.Subcategory) AS t
ON t.S = p.Subcategory
我发誓我检查了其他用户问题,例如:
Display zero by using count(*) if no result returned for a particular case
SQL - Returning all rows even if count is zero for item
但我找不到我需要的东西。
你能帮我解决这个问题吗? =)
谢谢!!!
【问题讨论】:
标签: sql-server sql-server-2008 count