MySQL子查询与日期之间

标签 mysql sql select group-by where-clause

我的查询是为了计算销售利润。为了计算成本价,我需要取特定日期的平均成本。如果我有一个日期,但对于日期范围 (将 '=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/

相关文章:

mysql - 触发列值更改?

c# - "must declare the scalar variable ' @x '"绑定(bind)SQL参数时

sql - 如何在不插入sql server记录的情况下知道表的下一个主键值?

mysql - 根据产品和付款表列出用户及其财务余额

select - 是否可以更改 jqGrid 的 edittype :"select"的 editoptions 值?

mysql - 无法加载Mysql LOAD DATA LOCAL INFILE

php - 如何在一个 SQL 语句中从当前行的前一行获取 "use"mysql 单元格,并显示包括第一行在内的所有行?

sql - 如何用SQL比较两行的值?

c# - 为什么不是 DbConnection 而不是 SqlConnection 或 OracleConnection?

php - 如何从 1 列中选择具有许多 id 不同的数据 mysql