gpt4 book ai didi

sql查询组中的连接字符串

转载 作者:行者123 更新时间:2023-12-04 06:23:37 25 4
gpt4 key购买 nike

我有这个表结构

ProjectExpenses Table:
--------------------------------------
ProjectName Expense Currency
--------------------------------------
Foo 10 USD
Foo 20 USD
Foo 100 JPY
Bar 50 EUR
Bar 25 EUR

我绝对想按 ProjectName 分组;我知道的就这么多,但我怎么能得到这样的输出
--------------------------
ProjectName AllExpenses
--------------------------
Foo 30 USD, 100 JPY
Bar 75 EUR,

我正在寻找一个字符串连接函数,但我不知道从哪里开始寻找,或者即使这样的事情只用一个 sql 查询是可能的。

任何有关如何解决此问题的提示将不胜感激。

最佳答案

让我们从一个基本查询开始,以获取我们需要的数据:

select ProjectName, Sum(Expense) as Expenses, Currency
from ProjectExpenses
group by ProjectName, Currency

我们可以轻松地为单个项目汇总一个列表,如下所示:
declare @ProjectExpenses table
(
ProjectName varchar(500),
Expense int,
Currency varchar(500)
)

insert into @ProjectExpenses (ProjectName, Expense, Currency) values ('Foo', 10, 'USD')
insert into @ProjectExpenses (ProjectName, Expense, Currency) values ('Foo', 20, 'USD')
insert into @ProjectExpenses (ProjectName, Expense, Currency) values ('Foo', 100, 'JYP')
insert into @ProjectExpenses (ProjectName, Expense, Currency) values ('Bar', 50, 'EUR')
insert into @ProjectExpenses (ProjectName, Expense, Currency) values ('Bar', 25, 'EUR')


-- do the deed

declare @ProjectExpenseResults table
(
ProjectName varchar(255),
AllExpenses varchar(4000)
);

declare @ProjectName varchar(255);
declare @ExpenseList varchar(4000);

declare c cursor for
select distinct ProjectName
from @ProjectExpenses;
open c;
fetch next from c into @ProjectName;

while @@FETCH_STATUS = 0
begin
set @ExpenseList = null;

select @ExpenseList = ISNULL(@ExpenseList + ', ', '') + CAST(Expenses as varchar(255)) + ' ' + Currency
from (
select Sum(Expense) as Expenses, Currency
from @ProjectExpenses
where ProjectName = @ProjectName
group by Currency
) t;

insert into @ProjectExpenseResults ( ProjectName, AllExpenses )
values (@ProjectName, @ExpenseList);

fetch next from c into @ProjectName;
end

close c;
deallocate c;

select * from @ProjectExpenseResults

关于sql查询组中的连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6284228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com