【问题标题】:How to Sum multiple lines in sql如何在sql中对多行求和
【发布时间】:2012-03-07 11:27:21
【问题描述】:

我有多行数据都共享同一个公司 ID。

有没有办法使用 SQL Server Management Studio 2005 对所有金额进行“汇总”,从而为每个公司 ID 提供一行数据?

例如我目前有以下数据......

Company_Name   Company_ID   Amount
Company 6         10024   120
Company 6         10024   569
Company 6         10024    53
Company 6         10024   100
Company 6         10024   564
Company 7         10638  9500
Company 7         10638   105
Company 7         10638   624

我想尝试得到的是......

Company_ Name   Company_ID     Amount 
Company 6        10024         1406
Company 7        10638        10229

有没有办法做到这一点?

任何指出我正确方法的建议都会很棒。

谢谢,

【问题讨论】:

  • SQL 中没有“行”。您可以将其称为 {records,tuples,rows} (含义略有不同),但不能称为“行”。您想要的称为“聚合”。在您的精美手册中查找 SUM。 SUM() 是“聚合函数”之一。
  • @wildplasser:其实他们需要的是“总结”,意思略有不同;)
  • 请注意,您的表格并未完全规范化。
  • 为您的所有帮助而欢呼。我已经整理好了。谢谢!

标签: sql summary


【解决方案1】:
SELECT Company_Name, Company_ID, SUM(Amount) 
FROM TableName GROUP BY Company_Name, Company_ID

【讨论】:

    【解决方案2】:
    SELECT Company_Name, Company_ID, sum(Amount)
    FROM your table
    GROUP BY Company_Name, Company_ID
    

    【讨论】:

      【解决方案3】:

      试试这个;

      SELECT Company_Name, Company_ID, SUM(Amount) AS Amount
      FROM Companies
      GROUP BY Company_Name, Company_ID;
      

      演示here.

      【讨论】:

        【解决方案4】:
        SELECT Company_Name, Company_ID, sum(Amount)
        FROM table
        group by Company_Name, Company_ID
        

        【讨论】:

          【解决方案5】:

          你需要使用GROUP BYSUM函数。

          SELECT Company_Name, Company_ID, SUM(Amount) AS TOTAL_AMOUNT
          FROM myTable
          GROUP BY Company_Name, Company_ID
          

          【讨论】:

            【解决方案6】:
            WITH T ( Company_Name, Company_ID, Amount )
                 AS
                 (
                  SELECT 'Company 6', '10024', 120 UNION ALL
                  SELECT 'Company 6', '10024', 569 UNION ALL
                  SELECT 'Company 6', '10024', 53 UNION ALL
                  SELECT 'Company 6', '10024', 100 UNION ALL
                  SELECT 'Company 6', '10024', 564 UNION ALL
                  SELECT 'Company 7', '10638', 9500 UNION ALL
                  SELECT 'Company 7', '10638', 105 UNION ALL
                  SELECT 'Company 7', '10638', 624 
                 )
            SELECT DISTINCT Company_Name, Company_ID, 
                   SUM(Amount) OVER (PARTITION BY Company_ID) AS total_amount
              FROM T;
            

            【讨论】:

              【解决方案7】:

              为我工作:

                  select Company_Name   , Company_ID   ,sum(Amount) as 'Amount' from Company group by 
              Company_Name,Company_ID   ;
              

              【讨论】:

                【解决方案8】:
                create table #tempTable
                (
                    Id bigint,
                    Title varchar(100),
                    Amount money
                )
                insert into #TempTable(Title,Id,Amount)
                Values
                ('Company 6',         10024,   120),
                ('Company 6',         10024,   569),
                ('Company 6',         10024,    53),
                ('Company 6',         10024,   100),
                ('Company 6',         10024,   564),
                ('Company 7',         10638,  9500),
                ('Company 7',         10638,   105),
                ('Company 7',         10638,   624)
                
                
                select Title, Sum(Amount)Amount from #TempTable
                group by Title,ID
                
                drop Table #TempTable
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-01-21
                  • 1970-01-01
                  • 2017-06-07
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多