如何对不同列的值求和
Posted
技术标签:
【中文标题】如何对不同列的值求和【英文标题】:How can I sum value of distinct columns 【发布时间】:2015-11-08 06:24:43 【问题描述】:我有两列(col1 和 col 2)col1
是 VARCHAR 数据类型,col2
是 INT。我有许多重复 col1
值的记录。现在我需要 sum(col2) 其中col1
是不同的。我该怎么做?
我以前试过这样,但没有用。
Select distinct
col1, sum(col2) as col2
from mytable
group by col1
Select sum(col2)
from
(Select distinct col1 from mytable)
【问题讨论】:
为了更好地回答您的问题。我认为声明 varchar 数据类型的两个实体对你来说是有意义的,除非你有一个真正强加给你的约束。我似乎不明白你想在这里实现什么。 (我相信您正在尝试进行某种连接)。请尝试更具体一点。 显示一些数据和结果,并解释它与您的预期有何不同。至少没有我们无法真正提供帮助。 hm..,不清楚你需要什么,但看起来你不需要使用 distint,只需分组:select col1, sum(col2) from mytable group by col1
【参考方案1】:
WITH
CTE
AS
(
SELECT
col1
,col2
,ROW_NUMBER() OVER(PARTITION BY col1 ORDER BY col2) AS rn
FROM mytable
)
SELECT
SUM(col2) AS SumCol2
FROM CTE
WHERE rn=1
;
如果col1
中有几行具有相同的值,您应该决定要选择哪一行。上面的查询将选择col2
最小的行。
【讨论】:
以上是关于如何对不同列的值求和的主要内容,如果未能解决你的问题,请参考以下文章