gpt4 book ai didi

sql查询统计重复项

转载 作者:行者123 更新时间:2023-12-02 23:22:11 24 4
gpt4 key购买 nike

我得到的结果是:

Code    Declaration 
123 a1 - 2nos
123 a2 - 230nos
123 a3 - 5nos
123 a1 - 100nos
123 a3 - 6nos

是否可以对重复项进行求和,并且我需要像这样显示输出:

Code    Declaration
123 a1 - 102nos
123 a2 - 230nos
123 a3 - 11nos

最佳答案

我的回答基于 previous question你发布的。这是一个 CTE 版本,它将拆分数据并将其汇总到声明中:

;with cte (code, DeclarationItem, Declaration) as
(
select Code,
cast(left(Declaration, charindex(',',Declaration+',')-1) as varchar(50)) DeclarationItem,
stuff(Declaration, 1, charindex(',',Declaration+','), '') Declaration
from yourtable
union all
select code,
cast(left(Declaration, charindex(',',Declaration+',')-1) as varchar(50)) DeclarationItem,
stuff(Declaration, 1, charindex(',',Declaration+','), '') Declaration
from cte
where Declaration > ''
),
s2 as
(
select code,
ltrim(rtrim(left(declarationitem, charindex('-', declarationitem)-1))) col1
, reverse(left(reverse(declarationitem), charindex('-', reverse(declarationitem))-1)) col2
from cte
),
fnl as
(
select code, col1,
left(col2, patindex('%[Aa-Zz]%', col2)-1) value,
substring(col2, patindex('%[Aa-Zz]%', col2), len(col2)) str
from s2
)
select code, col1 +' - '+ cast(sum(cast(value as int)) as varchar(50)) + str as declarationitem
from fnl
group by code, col1, str

参见SQL Fiddle with Demo

结果是:

| CODE | DECLARATIONITEM |
--------------------------
| 123 | 123 a1 - 102nos |
| 123 | 123 a2 - 230nos |
| 123 | 123 a3 - 11nos |

关于sql查询统计重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13538692/

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