0

我需要从子查询中指定的列返回信息。在下面的子查询中,我试图从 PaymentDate 列返回信息。当我尝试在查询中选择 Order.PaymentDate 时,我收到一个错误Invalid object nameOrder.PaymentDate我试图将其指定为 Payment.PaymentDate 但我得到了同样的错误。关于如何解决这个问题的任何想法?

(SELECT ID, SUM(amount) AS purchase FROM Order
WHERE Order.PaymentDate BETWEEN '2012-09-01' AND '2012-09-04'
AND Order.amount >=0
    GROUP BY ID)Payment
4

2 回答 2

0

如果您希望在外部查询中使用 order.payment 日期,则需要group by它,但我怀疑这就是您想要的。你想要一个聚合函数,比如max(order.payment)or min(order.payment)?您不能在同一个查询中混合使用聚合函数和非聚合函数。

如果您想要,正如您在对另一个答案的评论中所说,验证您的日期范围标准是否已应用,请返回 max() 和 min() 值范围,例如:

 (SELECT ID, SUM(amount) AS purchase, 
min(order.paymentdate) as min_payment, 
max(order.paymentdate) as max_payment 
FROM Order
    WHERE Order.PaymentDate BETWEEN '2012-09-01' AND '2012-09-04'
    AND Order.amount >=0
        GROUP BY ID)Payment
于 2012-09-04T13:35:27.190 回答
0

由于您正在获取日期范围的聚合,因此在您的子查询的任何返回行中都没有任何特定日期。您始终可以在外部查询中任意声明日期范围,以显示聚合求和的日期范围。

SELECT Payment.ID, Payment.purchase, '2012-09-01' AS 'startdate', '2012-09-04' AS 'enddate' 
FROM (SELECT ID, SUM(amount) AS purchase 
     FROM Order 
     WHERE Order.PaymentDate BETWEEN '2012-09-01' AND '2012-09-04' 
     AND Order.amount >=0 
     GROUP BY ID) AS Payment 
于 2012-09-04T13:58:33.313 回答