2010-10-15 188 views
1

hEY全部SQL总计和总计

我有一个表显示事务及其状态。如何创建一列,显示总的已完成的交易,拒绝下跌,总计所有的在不同的列

例如我期待这样的事情

Completed 100 
Rejected 50 
Declined 20 
Total  170 

在3不同的行..

表字段是这样的。

transaction_id 
status_id, 
date 
transaction_number 
+0

什么SQL RDBMS? – 2010-10-15 10:34:26

+0

查看http://tinyurl.com/so-hints以获得更好的提问 - 在这里SO或一般在任何论坛,在线或离线 – 2010-10-15 10:41:54

+0

对不起MS SQL 2005 – andreas 2010-10-15 10:45:19

回答

3

假设你在你需要的输出提的文本状态对应于你的表格中status_id列,你可以使用类似:

SELECT status_id, count(*) 
FROM dbo.YourTable 
GROUP BY status_id WITH ROLLUP 

这适用于SQL Server 2000和较新的 - 不知道如果其他RDBMS具有完全相同的语法...(不幸的是,你没有提到你使用是什么系统?)

WITH ROLLUP会导致额外的配置加入到NULL的status_id的结果 - 这是所有计数合计的总和。

你没有提到如何“翻译”成status_id的文字说明 - 如果你提供必要的信息能被添加....

+0

@ Vash:为rollup添加WITH ROLLUP – 2010-10-15 10:36:00

+0

+1;然后;-)。 – 2010-10-15 11:03:22

+0

+1,你可以添加一个COALESCE来包含单词“total”:'SELECT COALESCE(status_id,'Total'),count(*)...' – 2010-10-15 12:32:51