这条SQL语句怎么写呢?急~~~,在线等

lsp69 2011-04-28 05:34:17

有以下数据表:
ID Bank TradeMoney
1 A 3200
2 B 1000
3 c 400

要得出这样的结果:(即把bank这列的值用","分隔,然后把TradeMoney值相加,形成一条记录)
Bank TradeMoney
A,B,C 4600
...全文
101 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
浩方软件HFWMS 2011-04-28
  • 打赏
  • 举报
回复
那这个又怎样写呢:

有一数据列:

aID
1,2,3,4

要得出以下结果:(用逗号分隔的值,要形成以下的字段列):
PKID aID Temp1 Temp2 Temp3 Temp4 Temp9
1 1,2,3,4,9 1 2 3 4 9


kaixin780 2011-04-28
  • 打赏
  • 举报
回复
declare @Name as nvarchar(1000)='';
select @Name=@Name + Bank+',' from TableA
select
case when LEN(@Name)>0 then
SUBSTRING(@Name,0,LEN(@Name)-1)
else @Name
end Bank
, SUM(TradeMoney) TradeMoney
from TableA
bill024 2011-04-28
  • 打赏
  • 举报
回复

create table t(id int,bank varchar(10),money int)
insert t select 1,'A',3200
union all select 2,'B',1000
union all select 3,'C',400

;with test as
(
select col=STUFF((select ','+bank from t for Xml path('')),1,1,''),* from t
)
select Bank=col,TradeMoney=SUM(money) from test
group by col

Bank TradeMoney
A,B,C 4600
Shawn 2011-04-28
  • 打赏
  • 举报
回复
CREATE TABLE #temp(ID INT, Bank CHAR(1), TradeMoney INT)
INSERT #temp
SELECT 1, 'A', 3200 UNION ALL
SELECT 2, 'B', 1000 UNION ALL
SELECT 3, 'C', 400
--sql:
SELECT
Bank = STUFF((SELECT ','+Bank FROM #temp FOR XML PATH('')), 1,1,''),
TradeMoney = SUM(TradeMoney)
FROM #temp
/*
A,B,C 4600
*/
yibey 2011-04-28
  • 打赏
  • 举报
回复
或者这样吧

declare @sumstr varchar(max)
declare @sum int
set @sum =0
set @sumstr =''
select @sumstr = @sumstr+','+Bank, @sum = @sum + trademoney from table

select @sumstr , @sum


yibey 2011-04-28
  • 打赏
  • 举报
回复
自己写个函数吧,或者自定一个聚合函数吧
浩方软件HFWMS 2011-04-28
  • 打赏
  • 举报
回复
游标太慢了,我想用一条语句来实现
anny 2011-04-28
  • 打赏
  • 举报
回复
用游标,逐行读取。可组成这个字符串。

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧