如何计算行中的值并在列中显示结果

时间:2014-04-22 11:57:03

标签: sql-server

请帮帮我

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    |

3 个答案:

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

这将为您提供一个表格,然后您可以在代码中安排它看起来像您要求的表格,只需很少的努力。此外,它更清晰,如果引入系统,将很容易处理新状态。