2016-04-23 16 views
0

次のACCESSクエリは、年間の合計集計を返します。エラーなしで実行されますが、3列の結果はすべてゼロです。私は誰かがそれが正確に合計を追加していない理由を伝えることができれば感謝します。 day_endは、サブクエリWHERE句は日付範囲のための反対を前提としていたday_start未満であるため、年単位の毎日の集計計算

SELECT  
    Month(days.day_start) AS [MONTH], 
    Day(days.day_start) AS [DAY], 
    Year(days.day_start) AS [YEAR], 

    (SELECT Round(Nz(Sum(sales_receipt.SELLING_PRICE * sales_receipt.quantity),0) ,2) 
     FROM SALES_RECEIPT 
     INNER JOIN INVENTORY ON INVENTORY.INVENTORY_ID = SALES_RECEIPT.INVENTORY_ID 
     WHERE SALES_RECEIPT.[SALE_DATE] >= days.day_start 
     AND SALES_RECEIPT.[SALE_DATE] < days.day_end) AS [Daily Sales Total], 

    (SELECT Round(Nz(Sum(sales_receipt.SELLING_PRICE * sales_receipt.quantity),0) ,2) 
     FROM SALES_RECEIPT 
     INNER JOIN INVENTORY ON INVENTORY.INVENTORY_ID = SALES_RECEIPT.INVENTORY_ID 
     WHERE SALES_RECEIPT.[SALE_DATE] >= days.day_start 
     AND SALES_RECEIPT.[SALE_DATE] < days.day_end 
     AND SALES_RECEIPT.SALES_TAX_EXEMPT="No") AS [Taxable Sales], 

    (SELECT Round(Nz(Sum(sales_receipt.SELLING_PRICE * sales_receipt.quantity),0) ,2) 
    FROM SALES_RECEIPT 
    INNER JOIN INVENTORY ON INVENTORY.INVENTORY_ID = SALES_RECEIPT.INVENTORY_ID 
    WHERE SALES_RECEIPT.[SALE_DATE] >= days.day_start 
     AND SALES_RECEIPT.[SALE_DATE] < days.day_end 
     AND SALES_RECEIPT.SALES_TAX_EXEMPT="Yes") AS [Tax Free Sales] 

FROM  
    (SELECT 
     DateSerial(Year(sale_date), Month(sale_date), Day(sale_date)) AS day_start, 
     DateAdd("s", -1, DateSerial(Year(sale_date), 
       Month(sale_date), Day(sale_date))) AS day_end 

    FROM SALES_RECEIPT 
    WHERE sale_date >= #1/1/2009# AND sale_date < #12/31/2016# 
    GROUP BY Year(sale_date), Month(sale_date), Day(sale_date) 
    ) AS days; 

答えて

0

あなたのサブクエリの凝集体は、ゼロを返します。実際には、FROM句の派生テーブルに指定されたday_endは、 1秒未満です。

DateAdd("s", -1, DateSerial(Year(sale_date), 
       Month(sale_date), Day(sale_date)) AS day_end 

DateAdd'sの値を参照し、必要に応じて考え直してください。ところでDateSerial()はここでは冗長です。確実に正の間隔で開始日と終了日の間の実行可能な範囲を返します。開始日から終了日までの100日間は以下のとおりです。

sale_date As day_start, 
DateAdd("d", 100, sale_date) AS day_end 
+0

私が提供した情報に基づいて動作させることができました。ありがとうございました!!私は別の[投稿](http://stackoverflow.com/questions/36805999/aggregate-calculations-from-2-separate-tables)集約計算を含む私はsomoneが解決策を提供することを望む。 –