ms sql子查询不同的where子句相同的表

ms sql子查询不同的where子句相同的表,sql,sql-server,Sql,Sql Server,我正在尝试生成以下查询: 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].Pay

我正在尝试生成以下查询:

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
子查询/第二个内部连接是失败的地方,这是我能做的吗?我想将批量订单收入作为同一结果集中的另一列

希望这是有意义的

谢谢


Michael

看起来您没有为第二次内部连接指定要连接的键

        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.____

在这种情况下,外部应用或交叉应用将更好地满足您的需要我相信您当前的求和操作将在每一行显示相同的结果,不确定这是否是有意的请参见

在第二个子查询之前删除Inner联接。您指的是它失败的地方吗?SQL Server是否给了您一个错误?SQL Server说在“where”附近有一个错误,我认为是错误的语法