把多条记录合并成一条的SQL语句

时间:2021-01-10 00:27:07
比如:table1

姓名    出差地方  天/费用 

张三       北京      300元
张三       上海      200元
张三       深圳      100元
........N条...........


select name,address,money from table1 where name = '张三'

   
怎样合成把这N条数据合成一条 显示出来 谢谢

14 个解决方案

#1



declare @t table(name varchar(10),ad varchar(20),fee int)
insert into @t
select 'zhangsan','xx',100 union all
select 'zhangsan','xx1',200 union all
select 'zhangsan','xx2',250 union all
select 'lisi','xx',150 union all
select 'lisi','xx1',50

select sum(fee)as fee,name from @t group by name

#2


请问楼主想怎么合并?

#3


如果想合并成

只有张三出差的费用

select name,sum(money) from table1

#4


楼上我写少了 应该为

select name,sum(money) from table1 group by name


#5


这样做有什么意义吗?

#6


引用 2 楼 xuexinghen 的回复:
请问楼主想怎么合并?

是啊,合成什么样呢?

         北京 上海 深圳
张三     300  200  100 。。。。。。。。


这样???

#7


确实,楼主没说明白想要合并成什么样子
如果是合计就根上面几位说的一样,用sum就行

如果是6楼那样的效果就用转置
sum …… case
但是这样有个问题,如果出差位置不是固定的,会很难写,只能用临时表了

#8


一条?难噢,行转列,得知道列数然后再case when。你这里出差得地方不定。。。

#9


lz  说明白点啊

#10


楼主是考查UNION ALL与UNION的用法,对吧?!

#11


直接sql出来 存储过程可以试试 
如果是软件界面显示出来到比较好办

#12


--合并N个表中的记录(Oracle版本)

SELECT SUM(T_NAME),
       SUM(T_MONEY)
FORM (
   SELECT T_NAME,
          T_MONEY
   FROM table_1
   WHERE T_NAME = ?
   UNION ALL
   SELECT T_NAME,
          T_MONEY
   FROM table_2
   WHERE T_NAME = ?
   UNION ALL
   ……
   SELECT T_NAME,
          T_MONEY
   FROM table_n
   WHERE T_NAME = ?;
);

#13


显示成怎么样的效果?

#14


你到底想怎么个合并法啊?
把你想要的结果写出来,然后大家才好贴代码
还有你用什么数据库

#1



declare @t table(name varchar(10),ad varchar(20),fee int)
insert into @t
select 'zhangsan','xx',100 union all
select 'zhangsan','xx1',200 union all
select 'zhangsan','xx2',250 union all
select 'lisi','xx',150 union all
select 'lisi','xx1',50

select sum(fee)as fee,name from @t group by name

#2


请问楼主想怎么合并?

#3


如果想合并成

只有张三出差的费用

select name,sum(money) from table1

#4


楼上我写少了 应该为

select name,sum(money) from table1 group by name


#5


这样做有什么意义吗?

#6


引用 2 楼 xuexinghen 的回复:
请问楼主想怎么合并?

是啊,合成什么样呢?

         北京 上海 深圳
张三     300  200  100 。。。。。。。。


这样???

#7


确实,楼主没说明白想要合并成什么样子
如果是合计就根上面几位说的一样,用sum就行

如果是6楼那样的效果就用转置
sum …… case
但是这样有个问题,如果出差位置不是固定的,会很难写,只能用临时表了

#8


一条?难噢,行转列,得知道列数然后再case when。你这里出差得地方不定。。。

#9


lz  说明白点啊

#10


楼主是考查UNION ALL与UNION的用法,对吧?!

#11


直接sql出来 存储过程可以试试 
如果是软件界面显示出来到比较好办

#12


--合并N个表中的记录(Oracle版本)

SELECT SUM(T_NAME),
       SUM(T_MONEY)
FORM (
   SELECT T_NAME,
          T_MONEY
   FROM table_1
   WHERE T_NAME = ?
   UNION ALL
   SELECT T_NAME,
          T_MONEY
   FROM table_2
   WHERE T_NAME = ?
   UNION ALL
   ……
   SELECT T_NAME,
          T_MONEY
   FROM table_n
   WHERE T_NAME = ?;
);

#13


显示成怎么样的效果?

#14


你到底想怎么个合并法啊?
把你想要的结果写出来,然后大家才好贴代码
还有你用什么数据库