19

以下是列表数据。

Code   ItemCount   Type      Amount 
----------------------------------------
B001    1          Dell         10.00
B001    1          Dell         10.00
B001    1          Apple        10.00
B001    2          Apple        20.00
B001    2          Apple        20.00
B114    1          Apple        30.50
B114    1          Apple        10.00

我需要一个结果来按代码、类型和总计分组,并获得每一行ItemCount的总计。Amount

这可能吗?

Code   ItemCount    Type      Amount 
----------------------------------------
B001    2          Dell          20.00
B001    5          Apple         50.00
B114    2          Apple         40.50 
4

6 回答 6

27

请试试:

SELECT
    Code,
    SUM(ItemCount) ItemCount,
    Type,
    SUM(Amount) Amount
FROM
    YourTable
GROUP BY Code, Type
ORDER BY Code
于 2013-07-25T04:17:26.407 回答
4

这看起来像家庭作业。

(我发誓当我第一次看到这个问题时,我以为这被标记为 MySQL,但标题清楚地显示了 MS SQL)

对于 MySQL,此查询将返回指定的结果集:

SELECT t.Code
     , SUM(t.ItemCount) AS ItemCount
     , t.Type
     , s.Amount AS Amount
  FROM mytable t
 CROSS
  JOIN ( SELECT SUM(r.Amount) AS Amount
           FROM mytable r
       ) s 
 GROUP
    BY t.Code
     , t.Type
 ORDER BY t.Code ASC, t.Type DESC

对于其他数据库,删除 For MySQL 列别名周围的反引号。

如果您需要保留大小写,对于 Oracle,标识符用双引号括起来。对于 SQL Server,标识符用方括号括起来。对于 MySQL,标识符包含在反引号中。

于 2013-07-25T04:20:55.340 回答
2

您可以尝试这个更简单的解决方案:

select Code,sum(ItemCount),Type,sum(Amount) from table group by code,type

了解“分组依据”会派上用场

于 2017-09-15T04:27:02.003 回答
1

你可以试试这个查询:

SELECT Code,SUM(ItemCount) AS ItemCount,Type,SUM(Amount) AS Amount
FROM
    table
GROUP BY Code, Type

这会给你正确的结果。您需要按CodeType不分组ItemCount

于 2013-07-25T04:19:49.680 回答
0

您提供的金额与示例数据不同,但这适用于示例数据值:

SELECT Code, SUM(ItemCount) AS ItemCount, [Type], SUM(Amount) AS Amount 
FROM dbo.TestSubs GROUP BY Code,[Type] ORDER BY Code
于 2013-07-25T04:31:06.057 回答
0

如果我的理解是正确的,每行的实际总数是 itemcount 和金额的乘积,那么您可以使用下面的代码。如果不使用@Abu 的代码。

;WITH cte AS
(
    SELECT Code, ItemCount, Type, Amount, ItemCount * Amount AS TotalAmount FROM <Table>
)
SELECT 
    Code,
    SUM(ItemCount),
    Type,
    SUM(TotalAmount)
FROM cte
GROUP BY Code, Type
于 2013-07-25T04:31:37.517 回答