姓名 出差地方 天/费用
张三 北京 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
是啊,合成什么样呢?
北京 上海 深圳
张三 300 200 100 。。。。。。。。
这样???
#7
确实,楼主没说明白想要合并成什么样子
如果是合计就根上面几位说的一样,用sum就行
如果是6楼那样的效果就用转置
sum …… case
但是这样有个问题,如果出差位置不是固定的,会很难写,只能用临时表了
如果是合计就根上面几位说的一样,用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 = ?;
);
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
是啊,合成什么样呢?
北京 上海 深圳
张三 300 200 100 。。。。。。。。
这样???
#7
确实,楼主没说明白想要合并成什么样子
如果是合计就根上面几位说的一样,用sum就行
如果是6楼那样的效果就用转置
sum …… case
但是这样有个问题,如果出差位置不是固定的,会很难写,只能用临时表了
如果是合计就根上面几位说的一样,用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 = ?;
);
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
你到底想怎么个合并法啊?
把你想要的结果写出来,然后大家才好贴代码
还有你用什么数据库
把你想要的结果写出来,然后大家才好贴代码
还有你用什么数据库