我有这个表:总和行值,如果他们的ID是在规定的范围内
+----+-------+-------------------+
| ID | Value | Date |
+----+-------+-------------------+
| 1 | 8 | 12/10/2015 8:00am |
| 1 | 10 | 12/10/2015 8:30am |
| 1 | 5 | 12/10/2015 9:00am |
| 1 | 11 | 12/10/2015 9:30am |
| 2 | 8 | 12/10/2015 8:00am |
| 2 | 6 | 12/10/2015 8:30am |
| 2 | 8 | 12/10/2015 9:00am |
| 2 | 9 | 12/10/2015 9:30am |
+----+-------+-------------------+
etc.
现在我有这样的查询(简化为清楚起见):
SELECT ID, MAX(Value), MIN(Date)
FROM Values
WHERE ID IN (1,2,3,8)
GROUP BY (DATEPART(MINUTE, Date)/60), ID
ORDER BY ID, MIN(Date)
它返回的东西像这样:
+----+-------+-------------------+
| ID | Value | Date |
+----+-------+-------------------+
| 1 | 10 | 12/10/2015 8:00am |
| 1 | 11 | 12/10/2015 9:00am |
| 2 | 8 | 12/10/2015 8:00am |
| 2 | 9 | 12/10/2015 9:00am |
| 3 | 12 | 12/10/2015 8:00am |
| 3 | 6 | 12/10/2015 9:00am |
| 8 | 51 | 12/10/2015 8:00am |
| 8 | 58 | 12/10/2015 9:00am |
+----+-------+-------------------+
我需要计算值字段的总和如果,假设,该ID是1,2或3
我希望这样的事情:
+------------+-------+-------------------+
| IDfield | Value | Date |
+------------+-------+-------------------+
| IDstring1 | 30 | 12/10/2015 8:00am |
| IDstring1 | 26 | 12/10/2015 9:00am |
| IDstring2 | 51 | 12/10/2015 8:00am |
| IDstring2 | 58 | 12/10/2015 9:00am |
+------------+-------+-------------------+
,或者甚至更好:
+--------+--------+-------------------+
| Value1 | Value2 | Date |
+--------+--------+-------------------+
| 30 | 51 | 12/10/2015 8:00am |
| 26 | 58 | 12/10/2015 9:00am |
+--------+--------+-------------------+
我需要总结是静态的,所以我想我可以去这些解决方案之一的ID,但我想不出一个办法。
我会尽力解释预期的效果更好:
值1应该包含值字段其中ID IN的SUM(1,2,3),按小时分组,因为我已经在做了我查询
值2应该简单地包含在值字段其中ID = 8
编辑:添加源表例如,校正后的当前查询(I忘记把聚集MAX()到字段值在SELECT)
编辑#2:添加更好的解释
该查询是否真的执行? – jarlh
那么,我试图简化它,我希望我在这个过程中没有出错......但是,我使用的那个执行得很好 – Andrea
请提供样本数据和预期输出(与样本有关数据!)我不明白,你想要什么。更糟的是,我甚至无法理解逻辑... – Shnugo