我的查询是为了计算销售利润。为了计算成本价,我需要取特定日期的平均成本。如果我有一个日期,但对于日期范围
(将 '=2014-12-30 ' 替换为 'BETWEEN '2014),下面的查询效果很好-12-30' 和 '2015-01-02' 在两个地方)
它不会生成所需的输出
SELECT sinvoiceno,sinvoicedate,pureweight,makingcharge,totalamount,rd.avgr ,
(pureweight*rd.avgr)+makingcharge AS TotalCost ,
totalamount-((pureweight*rd.avgr)+makingcharge) AS Profit
FROM
(SELECT DATE_FORMAT(gdate,'%Y-%m-%d') AS grDate,AVG(goldrate24) AS AvgR
FROM rate_detail r
GROUP BY grDate
HAVING grdate = '2014-12-30' ) AS rd,
sales_master sm
WHERE sinvoicedate = '2014-12-30'
最佳答案
您需要一个联接条件,以便将子查询的行与同一日期的 sales_master
链接起来。
SELECT sinvoiceno,sinvoicedate,pureweight,makingcharge,totalamount,rd.avgr ,
(pureweight*rd.avgr)+makingcharge AS TotalCost ,
totalamount-((pureweight*rd.avgr)+makingcharge) AS Profit
FROM
(SELECT DATE(gDate) AS grDate, AVG(goldrate24) AS AvgR
FROM rate_detail r
WHERE DATE(gDate) BETWEEN '2014-12-30' AND '2015-01-02'
GROUP BY grDate ) AS rd
JOIN sales_master sm ON sinvoicedate = grDate
WHERE sinvoicedate BETWEEN '2014-12-30' AND '2015-01-02'
关于MySQL子查询与日期之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27743358/