2013-02-25 94 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

相關問題