我有一张这样的桌子:
Id Date Price Item Type
1 2009-09-21 25 1 M
2 2009-08-31 16 2 T
1 2009-09-23 21 1 M
2 2009-09-03 12 3 T我尝试接收type='M‘的ID和总价多个项目的列的输出,以及type='T’的另一个具有相同逻辑的列
对我来说,唯一的办法就是使用多cte,但它有点复杂和庞大:
with cte as (
select distinct a.id, a.date
sum(price*a.item) as numm
from table a
where a.type='M'
group by a.id),
crx as (
select cte.id, cte.numm, sum(a.price*a.item) as numm_1 from cte
join table a on a.id=cte.id and a.date=cte.date
where a.type='T'
group by cte.id)
select * from crx有一种感觉,它可以做得更好(例如使用子查询)-asking你如何可以做到。
附注:
SQLlite的东西将会非常受欢迎!
谢谢!
发布于 2016-09-18 03:38:27
也许这会有帮助
Declare @YourTable table (Id int,Date date,Price money,Item int,Type varchar(25))
Insert into @YourTable values
(1,'2009-09-21',25,1,'M'),
(2,'2009-08-31',16,2,'T'),
(1,'2009-09-23',21,1,'M'),
(2,'2009-09-03',12,3,'T')
Select ID
,sum(case when Type='M' then Price*Item else 0 end) as M
,sum(case when Type='T' then Price*Item else 0 end) as T
From YourTable
Group By ID返回
ID M T
1 46.00 0.00
2 0.00 68.00https://stackoverflow.com/questions/39550910
复制相似问题