SQL查询 多条记录拼接成一条记录

发车时间(departdate) | 客运站等级(stationlvl) | 售票张数(num)
2014-07-28 | 一级站 | 200
2014-07-28 | 二级站 | 100
2014-07-28 | 三级站 | 50
2014-07-29 | 一级站 | 300
2014-07-29 | 二级站 | 200
2014-07-29 | 三级站 | 100
表中的数据如上,需要查询的结果形式是下面的。怎么用SQL查询?
查询结果
发车时间 | 售票张数 | 一级站 | 二级站 | 三级站
2014-07-28 | 350 | 200 | 100 | 50
2014-07-29 | 600 | 300 | 200 | 100
客运站等级不止一、二、三级这三个等级。

第1个回答  2014-07-29
select
departdate --发车时间

,sum(num) --售票张数

,(select sum(num) from table where departdate=t.departdate and stationlvl=N'一级站') --一级站

,(select sum(num) from table where departdate=t.departdate and stationlvl=N'二级站') --二级站
,(select sum(num) from table where departdate=t.departdate and stationlvl=N'三级站') --三级站

from table t
group by departdate
第2个回答  推荐于2016-11-23

sqlserver写法,为了验证结果,在你提供数据基础上加了条数据,具体如下

创建表及数据

create table test
(departdate varchar(10),
stationlvl varchar(10),
num int)

insert into test values ('2014-07-28','一级站',200)
insert into test values ('2014-07-28','二级站',100)
insert into test values ('2014-07-28','三级站',50)
insert into test values ('2014-07-29','一级站',300)
insert into test values ('2014-07-29','二级站',200)
insert into test values ('2014-07-29','三级站',100)
insert into test values ('2014-07-30','三级站',90)--这条为新增

执行

declare @sql varchar(4000)
set @sql = 'select [departdate]'
select @sql = @sql + ',sum(isnull(case [stationlvl] when '''+[stationlvl]+''' then [num] end,0)) as 
['+[stationlvl]+']'
from (select distinct [stationlvl] from [test]) as a
select @sql = @sql+' from [test] group by [departdate]'
exec(@sql)

结果

本回答被提问者采纳

SQL查询 多条记录拼接成一条记录
select departdate --发车时间 ,sum(num) --售票张数 ,(select sum(num) from table where departdate=t.departdate and stationlvl=N'一级站') --一级站 ,(select sum(num) from table where departdate=t.departdate and stationlvl=N'二级站') --二级站 ,(select sum(num) from ta...

求教大牛一sql语句 多条记录合并为1条
。那么想要名称1,名称2,名称3 这样的数据就可以用如下sqlSELECT LEFT(Result, LEN(Result) - 1) FROM ( SELECT (SELECT 要合并的字段名+',' FROM 表名 FOR XML PATH('')) AS Result ) AS t

拜求sql语句,把两条记录合并为一条
select DemandNodeID,(select t1.Quantity from DemandQuantity t1,Quantity where t1.DemandNodeID=t.DemandNodeID and t1.MaterialID =1) Material1Quantity ,(select t2.Quantity from DemandQuantity t2,Quantity where t2.DemandNodeID=t.DemandNodeID and t2.MaterialID =2) Marerial2Quantity ...

SQL 如何将一个表中的两条或多条拥有相同ID的记录合并为一条?
一、创建表:create table stuUnion (sid int identity primary key,cid int,id varchar(500))二、添加数据:insert into stuUnion elect 1,'a' union select 1,'b' union select 2,'c' union select 2,'d' union select 3,'e' union select 3,'f' union select 3,'g'三、用标量函数...

求sql语句,两条记录合并为一条记录(考勤类)
select EmplID+min(RecTime) from 表名 group by EmplID)) A full outer join (select * from 表名 where EmplID+RecTime in (select EmplID+max(RecTime) from 表名 group by EmplID ) B on (A.EmplID=B.EmplID AND A.RecDate=B.RecDate)上下班记录在一块的查询语句,试一下吧。

sql查询中怎么将两条内容相同的记录显示成一条
sql查询中两条内容相同的记录显示成一条可以用group by语句或distinct语句来实现。如,test表中有如下数据:group by的方法:select id,name from test group by id,name;查询结果:distinct的方法:select distinct id,name from test;查询结果:...

我想实现数据库中的多条记录的数据相加生成一条记录,应该怎么做?_百度...
sql="select sum(cj) as total from table where name='张三'"然后你显示数据的时候可以这样 <%=rs("total")%> sql="select sum(cj) as total from table group by 表"这样就全部都打印出来.

SQL 组合查询
使用 UNION ALL DBMS 不会取消重复的行,因此这里返回 5 条记录。SELECT 语句的输出用 ORDER BY 子句进行排序。不过,在用 UNION 组合查询时,只能使用一条 ORDER BY 子句,它必须位于最后一条 SELECT 语句之后。下面的 SQL 对上文 UNION 返回的结果进行排序:排序检索结果:...

DB2,实现查询结果中多行字段合并到一行上的SQL语句写法 ?
SQL0347W 递归公共表表达式 "TEST.T2" 可能包含无限循环。 SQLSTATE=01605 10 F aaa bbb ccc 20 M ddd eee fff 30 X ggg hhh ttt yyy 已选择 3 条记录,打印 1 条警告消息。db2 =>

sql如何按条件把相同记录合并成一条记录?
1: select 'sum (case when 金额 = '' '金额' '' then 金额 else 0 end) ' from 数据表 group by 金额 2: 将上面的结果字符 用程序处理并拼接起来,可以得到,拼接后的结果如下:select 单号 ,sum (case when 金额 = 金额1 then 金额 else 0 end) as 金额1 ...

相似回答