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

日付範囲の集計を取得しているため、サブクエリの返された行には特定の日付はありません。外側のクエリでいつでも任意に日付範囲を指定して、集計が合計される日付範囲を表示できます。

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 に答える
0

外側のクエリで order.payment date を利用できるようにしたい場合は、group byそれが必要になりますが、それがあなたが望んでいることだとは思いません。またはのような集計関数が必要ですmax(order.payment)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 に答える