Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL分组和求和_Sql_Sql Server 2005 - Fatal编程技术网

SQL分组和求和

SQL分组和求和,sql,sql-server-2005,Sql,Sql Server 2005,我想知道如何从我当前的结果集中获得以下结果集 我的问题是这样的: SELECT SUBSTRING(Col1, 1, 3) As 'Series', b.Col2, cast(c.Price * c.Qty as money) AS Total from tableName a inner join .... ... WHERE date between '1/1/2012' and '1/31/2012' AND B IN ('C50', 'C51', 'C52', 'C53', 'C54')

我想知道如何从我当前的结果集中获得以下结果集

我的问题是这样的:

SELECT SUBSTRING(Col1, 1, 3) As 'Series', b.Col2, cast(c.Price * c.Qty as money) AS Total
from tableName a
inner join ....
...
WHERE date between '1/1/2012' and '1/31/2012'
AND B IN ('C50', 'C51', 'C52', 'C53', 'C54')
GROUP BY Col1, b.Col2, c.Price, c.Qty
并返回此结果集:

Series       Col2        Total
----------   ----------  ----------
105          C50         5.00
105          C50         15.00
105          C53         20.00
105          C53         20.00
105          C53         20.00
我希望它是这样工作的:

Series       Col2        Total
----------   ----------  ----------
105          C50         20.00
105          C53         60.00

谢谢

只需在未聚合的列上分组,如:

SELECT SUBSTRING(Col1, 1, 3) As 'Series', b.Col2, 
    sum(cast(c.Price * c.Qty as money)) AS Total
from tableName a
inner join ....
...
WHERE date between '1/1/2012' and '1/31/2012'
AND B IN ('C50', 'C51', 'C52', 'C53', 'C54')
GROUP BY Col1, b.Col2

只需在未聚合的列上分组,如:

SELECT SUBSTRING(Col1, 1, 3) As 'Series', b.Col2, 
    sum(cast(c.Price * c.Qty as money)) AS Total
from tableName a
inner join ....
...
WHERE date between '1/1/2012' and '1/31/2012'
AND B IN ('C50', 'C51', 'C52', 'C53', 'C54')
GROUP BY Col1, b.Col2

那很容易。仅使用
Col1
Col2
作为分组标准进行分组,并总结您的表达式
CAST(c.Price*c.quantity as money)


那很容易。仅使用
Col1
Col2
作为分组标准进行分组,并总结您的表达式
CAST(c.Price*c.quantity as money)


按计算列分组:
子字符串(Col1,1,3)


按计算列分组:
子字符串(Col1,1,3)


我收到此错误:列“Col1”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。@hype我的子查询中没有GROUP BY或AGGRATE。我的外部查询中没有col1。你一定是打错了。对不起,是的,我打错了。然而,在我修好它之后,一切似乎都是正确的,除了一个总数没有正确相加。我发现它正在创建一行的副本。因此,我在内部查询中添加了一个分组来修复它。谢谢我收到此错误:列“Col1”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。@hype我的子查询中没有GROUP BY或AGGRATE。我的外部查询中没有col1。你一定是打错了。对不起,是的,我打错了。然而,在我修好它之后,一切似乎都是正确的,除了一个总数没有正确相加。我发现它正在创建一行的副本。因此,我在内部查询中添加了一个分组来修复它。谢谢
SELECT sub.Series, sub.Col2, SUM(sub.Total)
FROM
(
SELECT SUBSTRING(Col1, 1, 3) As 'Series', b.Col2, cast(c.Price * c.Qty as money) AS Total
from tableName a inner join ....
  ...
WHERE date between '1/1/2012' and '1/31/2012'
  AND B IN ('C50', 'C51', 'C52', 'C53', 'C54') 
) as sub
GROUP BY sub.Series, sub.Col2