我的数据格式如下。
来自数据库的 Column 1
和Value
。我使用LEFT()
函数来提取Column 2
。我需要帮助的地方是对新计算的Column 2
中的值求和,并列出新列的总和。
感谢任何帮助。感谢。
答案 0 :(得分:2)
基本上,您似乎希望使用聚合键的函数进行聚合:
select left(column1, 1), sum(value)
from t
group by left(column1, 1);
答案 1 :(得分:2)
您可以使用 Windows功能
来实现它尝试以下查询
SELECT column1
, SUBSTRING(column1,1,1) as [calculated column 2]
,value
, SUM(value) OVER(PARTITION BY SUBSTRING(column1,1,1) )
FROM table1
您还可以使用LEFT(Column1,1)
代替SUBSTRING(column1,1,1)
(String Functions)
答案 2 :(得分:2)
SELECT *
,CalculatedColumn2 = LEFT(Column1,1)
,Value
,CalculatedSum = SUM(Value) OVER (PARTITION BY LEFT(Column1,1))
FROM
Table
虽然戈登的回答让你得到SUM,如果你想要每行,你可以使用分区窗口函数,例如SUM()OVER。
答案 3 :(得分:1)
使用column1
函数从LEFT
获取第一个字符,并将该结果集用作子查询,并按新列查找value
列组的总和。
<强>查询强>
SELECT t.[column2], SUM(t.[value]) as [value] FROM(
SELECT [column1], LEFT([column1], 1) AS [column2], [value]
FROM [your_table_name]
)t
GROUP BY t.[column2];
答案 4 :(得分:1)
添加computed persisted column
,其中包含左侧值(column1,1)。你没有重复你的代码。
alter table tbl add newcomputedcol column (left(column1, 1)) persisted
使用分组subqry或使用over子句:
select
*,
sum(value) over() over(partition by newcomputedcol) SumPerNewComputedCol
from tbl
您的新持久列可以编入索引,您的qry可以添加到视图中。