SQL来分隔组并添加引用它们的值
我有一个表,其中有它的类别“p”-支付,“R”-接收,“C”-信用,这些类别有它们的值。。。格式如下SQL来分隔组并添加引用它们的值,sql,sql-server,Sql,Sql Server,我有一个表,其中有它的类别“p”-支付,“R”-接收,“C”-信用,这些类别有它们的值。。。格式如下 Money | Category 5 P 10 R 5 R 20 C 15 P 并将sql的结果作为 P | R | C 20 | 15| 20 如何创建一个sql来生成这3列,而不必执行3个子查询 select sum(money) from accounts -- that adds up all select
Money | Category
5 P
10 R
5 R
20 C
15 P
并将sql的结果作为
P | R | C
20 | 15| 20
如何创建一个sql来生成这3列,而不必执行3个子查询
select sum(money) from accounts -- that adds up all
select
(select sum(money) from caixa where category= 'R' ) as 'CR',
(select sum(money) from caixa where category= 'P ) as 'CP'
from accounts -- this even works, but it returns me several lines with the same information
您可以尝试使用条件聚合函数而不是子查询
CREATE TABLE caixa (
Money int,
Categoty varchar(5)
);
insert into caixa values (5,'P');
insert into caixa values (10,'R');
insert into caixa values (5,'R');
insert into caixa values (20,'C');
insert into caixa values (15,'P');
查询
select sum(CASE WHEN Categoty = 'P' then money else 0 end) P,
sum(CASE WHEN Categoty = 'R' then money else 0 end) R,
sum(CASE WHEN Categoty = 'C' then money else 0 end) C
from caixa
WHERE Categoty IN ('P','R','C')
另一个选择是枢轴 示例
Select *
From (
Select [Money]
,[Category]
From Accounts
) src
Pivot ( sum([Money]) for [Category] in ([P],[R],[C]) ) pvt
返回
P R C
20 15 20
你的数据库管理系统是什么?我使用的是SQL Server。这比我在上面做的相同查询快吗?我认为这会比你的查询快,因为它只搜索
帐户
表一次。但这是基于你有创建索引的能力。你可以在中添加条件,我认为这可以让它更快。