如何按字符串的一部分对数据进行分组。
示例数据:
StringA ValueA ValueB
47353-1 123 1440
47353-2 235 9472
47353-3 44 439
47355-1 21 482
想要的结果:
StringA Count SumA SumB
47353 3 402 11351
47355 1 21 482
如果我使用Group by StringA,则会出错。
答案 0 :(得分:1)
派生表格版本。非常方便地避免两次输入复杂聚合函数:
select StringA, count(*), sum(ValueA) SumA, sum(ValueB) SumB
from
(
select left(StringA, 5) StringA, ValueA, ValueB
from tablename
)
group by StringA
ANSI SQL兼容! (LEFT
除外,应为substring(StringA from 1 for 5)
。)
答案 1 :(得分:0)
答案 2 :(得分:0)
以下查询将提供所需的输出: -
select distinct substring(stringA,1,charindex('-',StringA)-1) StringA,
Count(StringA) over (partition by substring(stringA,1,charindex('-',StringA)-1)) Count,
sum(ValueA) over (partition by substring(stringA,1,charindex('-',StringA)-1)) SumA,
sum(ValueB) over (partition by substring(stringA,1,charindex('-',StringA)-1)) SumB
from test
输出: -
StringA Count SumA SumB
47353 3 402 11351
47355 1 21 482