0
我在使用MySQL數據庫的舊版經典asp應用程序中使用以下查詢生成報表。MySql查詢加入
SELECT DISTINCT *
FROM
(SELECT b.rep_year,
b.rep_month,
sum(x.book_qty)AS salecnt,
sum(x.book_qty*x.s_price)AS Tsales
FROM report_date b
LEFT JOIN sale x ON Month(x.s_Date) = b.rep_month
AND year(x.s_Date) = b.rep_year
WHERE x.s_date <=curdate()
AND x.s_date >'2010-10-31'
GROUP BY b.rep_month,
b.rep_year)AS bob,
(SELECT c.rep_year,
c.rep_month,
sum(y.gQty) AS Tgift,
sum(y.gQty*y.gPrice)AS TGiftSum
FROM report_date c
LEFT JOIN gift y ON month(y.gDate) = c.rep_month
AND year(y.gDate)=c.rep_year
WHERE y.gbooktype =1
AND y.gdate <=curdate()
AND y.gdate>'2010-10-31'
GROUP BY c.rep_year,
c.rep_month)AS cob,
(SELECT d.rep_year,
d.rep_month,
sum(z.gQty) AS Ttgift,
sum(z.gQty*z.gprice)AS TtGiftSum
FROM report_date d
LEFT JOIN gift z ON month(z.gDate) = d.rep_month
AND year(z.gDate)=d.rep_year
WHERE z.gbooktype =2
AND z.gdate <=curdate()
AND z.gDate>'2010-10-31'
GROUP BY d.rep_year,
d.rep_month)AS dob
WHERE bob.rep_month = cob.rep_month
AND bob.rep_year=cob.rep_year
AND bob.rep_year=dob.rep_year
AND cob.rep_year=dob.rep_year
AND cob.rep_month = dob.rep_month
GROUP BY bob.rep_year,
bob.rep_month
從三個表:
report_date [rep_id, rep_month, rep_year]
sale[sale_id,book_id,book_qty,s_date,s_price]
gift[gift_id,book_id,gQty,gDate,gPrice,gbooktype]
我已經使用在應用此查詢2011年以來和我已經意識到錯誤,這只是今天。
對於任何特定的年份和月份,如果gbooktype 1和gbooktype 2都沒有贈品交易,則在報告摘要中忽略該年份和月份。我將非常感謝任何幫助,以便即使有書籍1或2的贈品交易,或者同時生成該月份和年份的報告。此外,任何查詢優化幫助將不勝感激。
謝謝@Kickstart我試圖運行查詢,但它報告找不到一些字段。 report_date表包含從2010年1月1日至2016年12月安排的rep_year(2010年)和rep_month(月,例如2月2日,12月12日12月) – Diin
您可以使用一些示例數據設置SQL提琴,以便我可以進行測試。 – Kickstart
稍微調整了第二個工作。如果沒有任何樣本數據,您能夠提供幫助的速度令我印象深刻 – Diin