2014-03-07 77 views
0

我試圖建立以下查詢:MS SQL子查詢不同的where子句相同的表

SELECT  
COUNT(dbo.[Order].OrderID) AS Orders, 
SUM(dbo.OrderLine.SubTotal) + SUM(dbo.OrderLine.Shipping) - SUM(dbo.OrderLine.Discount) AS Revenue, 
SUM(dbo.OrderLine.Shipping) AS Expr1, 
DATEADD(dd, 0, DATEDIFF(dd, 0, dbo.[Order].PaymentDate)) AS RevenueDate, 
(SUM(dbo.OrderLine.SubTotal) + SUM(dbo.OrderLine.Shipping))/COUNT(dbo.[Order].OrderID) AS RevenuePerOrder, 
SUM(dbo.OrderLine.Qty) AS Qty 

FROM   
    dbo.[Order] 
      INNER JOIN dbo.OrderLine ON dbo.[Order].OrderID = dbo.OrderLine.OrderID 
      INNER JOIN (
         SELECT SUM(dbo.OrderLine.SubTotal) + SUM(dbo.OrderLine.Shipping) - SUM(dbo.OrderLine.Discount) AS BulkRevenue 
         FROM dbo.OrderLine 
         INNER JOIN dbo.[Order] ON dbo.OrderLine.OrderID = dbo.[Order].OrderID 
         WHERE BulkOrder = 1) bulkrevenue 


WHERE  (dbo.[Order].OrderStatusID IN (2)) 
    AND (dbo.[Order].PaymentDate >= CONVERT(DATETIME, '02/03/2014', 103)) 
    AND (dbo.[Order].PaymentDate <= CONVERT(DATETIME, '08/03/2014', 103)) 
    AND (dbo.[Order].WebsiteID = 2) 


GROUP BY DATEADD(dd, 0, DATEDIFF(dd, 0, dbo.[Order].PaymentDate)), dbo.[Order].WebsiteID 

的子查詢/秒INNER JOIN就是事情失敗了,這是我能夠做到的?我想將批量訂單收入作爲另一列在同一個結果集中。

希望這是有道理的。

感謝,

邁克爾

+0

刪除第二個子查詢之前的INNNER JOIN。 – Mihai

+0

你是什麼意思,它在哪裏失敗? SQL Server給你一個錯誤? –

+0

SQL服務器說theres附近'哪裏'錯誤(我認爲不正確的語法) – MichaelEaton

回答

2

它看起來像您沒有指定參加在你的第二個內部連接哪個鍵。

 INNER JOIN (
        SELECT SUM(dbo.OrderLine.SubTotal) + SUM(dbo.OrderLine.Shipping) - SUM(dbo.OrderLine.Discount) AS BulkRevenue 
        FROM dbo.OrderLine 
        INNER JOIN dbo.[Order] ON dbo.OrderLine.OrderID = dbo.[Order].OrderID 
        WHERE BulkOrder = 1) bulkrevenue ON bulkrevenue.___ = table.____ 

這可能是一個情況外應用在哪裏,或交叉應用將更好地滿足您的需求(我相信你目前的資金的操作將顯示相同的每一行,不知道這是意)見http://sqlserverplanet.com/sql-2005/cross-apply-explained

相關問題