SQL:GROUP BY,其中列是唯一的

时间:2015-03-05 15:43:35

标签: database sql-server

所以我有一个巨大的表格,例如。

PROD_ID GEOG_ID TIME_ID VALUE1
1 MT JAN 100
1 MT FEB 100
2 MT JAN 100
2 MT FEB 100
3 TT MARCH 100

我想仅在地理MT中收到1月和2月的数据。然后将Value1与PROD_ID匹配的位置相加。

所以最终的结果是:

PROD_ID GEOG_ID VALUE1
1 MT 200
2 MT 200

我设法仅使用以下方法将数据降至TIME_ID:

SELECT PROD_ID,GEOG_ID,TIME_ID,VALUE1 FROM FROM WHERE GEOG_ID ='MT'和TIME_ID IN('JAN','FEB')

所以我有:

PROD_ID GEOG_ID TIME_ID VALUE1
1 MT JAN 100
1 MT FEB 100
2 MT JAN 100
2 MT FEB 100

但现在我不确定如何在PROD_ID上使用group by功能,因为TIME_ID是唯一的。

有什么想法吗?

非常感谢!

1 个答案:

答案 0 :(得分:3)

您可以在where子句中使用TIME_ID而不选择它,这意味着它不必进入group by语句。

SELECT PROD_ID, GEOG_ID, SUM(VALUE1) AS TOTAL
FROM database 
WHERE GEOG_ID = 'MT' 
AND TIME_ID IN ('JAN', 'FEB')
GROUP BY PROD_ID, GEOG_ID