2013-02-25 95 views
0

我有我的SQL Server查询一个问题,我希望你能帮助我SQL Server查询:如何将一个SELECT合并到另一个?

主要选择必须输出的重量

我如何可以总结一个选择到其他的日期和金额?数据从一个表Tbreport服用,而条件是 - 总重量的具体日期和一个日期(具体日期减去1天)

。例如:

CONCRETE DATE WEIGHT 
    Jan 1   100     
    Jan 2   150   
    Jan 3   210   

PREVIOUS DATE WEIGHT 
    Jan 1   100 
    Jan 2   250 (Jan 1 + Jan 2) 
    Jan 3   460 (Jan 1 + Jan 2 + Jan 3) 

在真正的表我有格式秒。例如:1358892000秒是2013年1月23日0:00:00和1358978400是2013年1月23日23:59:00。而且每次都是自己的体重

查询:

SELECT CONVERT(varchar, DATEADD(s, TBreport.date, 25568), 102) AS DATE, 
    SUM(TBreport.weight) 
+ 
(
SELECT SUM(TBreport.weight) AS WEIGHT 
FROM   TBreport INNER JOIN TBway ON TBreport.id_way = TBway.id 
WHERE  (SUBSTRING(TBway.name, 5, 8) LIKE 'to warehouse') 
AND ... ??? 
GROUP BY CONVERT(varchar, DATEADD(s, TBreport.date, 25568), 102) 
) 
FROM   TBreport INNER JOIN TBway ON TBreport.id_way = TBway.id 
WHERE  (SUBSTRING(TBway.name, 5, 8) LIKE 'to warehouse') 
GROUP BY CONVERT(varchar, DATEADD(s, TBreport.date, 25568), 102) 

回答

1

我假设dateTBreport

SELECT this.date, SUM(upToThis.weight) 
FROM TBreport this 
INNER JOIN TBreport upToThis ON upToThis.date <= this.date 
GROUP BY this.date 
+0

独特为什么你把这叫做“丑陋”的方式?你有另一种方式做到这一点,会不那么丑陋? – Yoh 2013-02-25 09:36:55

+0

数据以秒为单位存储,每隔5-10分钟测量一次,之后按重量加总。你的代码已经执行了15分钟(我认为它不工作)。 当我尝试总结我的查询时,我收到此错误消息 >只有一个表达式可以在选择列表中指定一个表达式,而不是在EXISTS中引入 >子查询。 – Jkterina 2013-02-25 10:06:17

+0

@Yohsoog这是“丑陋的”,因为它可能非常缓慢。使用游标很可能* *更快。 – 2013-02-25 10:13:35

相关问题