SQL Server-行到列(分组)
我曾尝试使用PIVOT将一些行合并到列中,但问题是,我必须对它们进行分组,我不知道该如何做 SQL查询:SQL Server-行到列(分组),sql,sql-server,tsql,pivot,rows,Sql,Sql Server,Tsql,Pivot,Rows,我曾尝试使用PIVOT将一些行合并到列中,但问题是,我必须对它们进行分组,我不知道该如何做 SQL查询: select res.tipo, it.itemname as item, sum(resi.quantity) as qt from Reserve as res inner join ReserveItems as resi on res.id_reserve = resi.id_reserve inner
select res.tipo,
it.itemname as item,
sum(resi.quantity) as qt
from Reserve as res inner join
ReserveItems as resi on res.id_reserve = resi.id_reserve inner join
Items as it on resi.defindex = it.defindex
where res.situacao = 3
group by res.tipo, it.id, it.itemname
order by tipo, it.id
结果:
tipo item qt
------ ---------------------------------------------------------------------------------------------------- -----------
0 Mann Co. Supply Crate Key 6
0 Tour of Duty Ticket 10
0 Reinforced Robot Emotion Detector 5
0 Reinforced Robot Bomb Stabilizer 1
0 Battle-Worn Robot Taunt Processor 3
0 Battle-Worn Robot KB-808 22
0 Battle-Worn Robot Money Furnace 19
1 Mann Co. Supply Crate Key 41
1 Tour of Duty Ticket 31
1 Pristine Robot Currency Digestor 1
1 Pristine Robot Brainstorm Bulb 2
1 Reinforced Robot Emotion Detector 32
1 Reinforced Robot Humor Supression Pump 45
1 Reinforced Robot Bomb Stabilizer 39
1 Battle-Worn Robot Taunt Processor 69
1 Battle-Worn Robot KB-808 78
1 Battle-Worn Robot Money Furnace 109
不确定这是否能回答您的问题,但我发现您将
tipo
包含在您的group by子句中,这将导致记录被拆分,因为根据您的信息,“Mann Co.Supply Crate Key”的tipo
可以为0或1。这将按照0曼恩公司供应板条箱钥匙
和第二组1曼恩公司供应板条箱钥匙
对他们进行分组
编辑:查看您的查询,您可能需要以下内容:
select
it.itemname as item,
sum(case when resi.tipo = 0 then resi.quantity else 1 end) as qty_0,
sum(case when resi.tipo = 1 then resi.quantity else 0 end) as qty_1
from Reserve as res inner join
ReserveItems as resi on res.id_reserve = resi.id_reserve inner join
Items as it on resi.defindex = it.defindex
where res.situacao = 3
group by it.itemname
order by tipo, it.id
请记住,如果不知道表的结构,就有点困难:)没有临时表?好的,@temp变量或派生表,甚至是一个CTE,在进行透视之前进行分组。
select it.itemname as item,
sum(case when res.tipo = 0 then resi.quantity else 0 end) as qt_compra,
sum(case when res.tipo = 1 then resi.quantity else 0 end) as qt_venda
from Reserve as res inner join
ReserveItems as resi on res.id_reserve = resi.id_reserve inner join
Items as it on resi.defindex = it.defindex
where res.situacao = 3
group by it.id, it.itemname
order by it.id
select
it.itemname as item,
sum(case when resi.tipo = 0 then resi.quantity else 1 end) as qty_0,
sum(case when resi.tipo = 1 then resi.quantity else 0 end) as qty_1
from Reserve as res inner join
ReserveItems as resi on res.id_reserve = resi.id_reserve inner join
Items as it on resi.defindex = it.defindex
where res.situacao = 3
group by it.itemname
order by tipo, it.id