请帮帮我
Oracle | Status| other columnns |
41 | A |
52 | W |
41 | A |
52 | W |
41 | W |
__________________
我需要一个结果查询,显示每个Oracle中的状态计数,如下所示:
Oracle | Total(A) | Total(W) |
41 | 2 | 1 |
52 | 0 | 2 |
答案 0 :(得分:2)
试试这个
with CTE AS
( select oracle,status from TableName)
select * from CTE
Pivot
(count(status) for status in ([A],[W]) ) as pvt
答案 1 :(得分:0)
试试这个:
select oracle, count(distinct status)
from your_table
group by oracle
您将不会拥有完全相同的结果,但您将获得构建该表所需的所有数据。
您也可以尝试一些Windows功能。
答案 2 :(得分:0)
获取该数据的方法至少有两种:
1。
SELECT t1.oracle, ISNULL(Total_A, 0) As [Total (A)], ISNULL(Total_W,0) As [Total (W)]
FROM
(
SELECT oracle, count(status) As Total_A
FROM TableName
WHERE status = 'A'
GROUP BY oracle
) t1 INNER JOIN
(
SELECT oracle, count(status) As Total_W
FROM TableName
WHERE status = 'W'
GROUP BY oracle
) t2 ON(t1.oracle = t2.oracle)
这将为您提供您所要求的表格,但是,我会不推荐它,因为这是一个可怕的混乱。
2
SELECT oracle, status, COUNT(status)
FROM TableName
GROUP BY oracle, status
这将为您提供一个表格,然后您可以在代码中安排它看起来像您要求的表格,只需很少的努力。此外,它更清晰,如果引入系统,将很容易处理新状态。