【问题标题】: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

标签: sql sql-server sql-server-2008


【解决方案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 最小的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    相关资源
    最近更新 更多