Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 条件依赖于父查询列的SUM子查询返回NULL_Mysql_Sql_Database - Fatal编程技术网

Mysql 条件依赖于父查询列的SUM子查询返回NULL

Mysql 条件依赖于父查询列的SUM子查询返回NULL,mysql,sql,database,Mysql,Sql,Database,各位! 我试图计算每天交易的价格总和。我所做的: SET @symbols_set = "A,B,C,D"; DROP TABLE IF EXISTS temp_deals; CREATE TABLE temp_deals AS SELECT Deal, TimeMsc, Price, VolumeExt, Symbol FROM deals WHERE TimeMsc >= "2019-04-01" AND TimeMsc <= "2019-06-30" AND FIND_IN

各位!

我试图计算每天交易的价格总和。我所做的:

SET @symbols_set = "A,B,C,D";

DROP TABLE IF EXISTS temp_deals;

CREATE TABLE temp_deals AS SELECT Deal, TimeMsc, Price, VolumeExt, Symbol FROM deals WHERE TimeMsc >= "2019-04-01" AND TimeMsc <= "2019-06-30" AND FIND_IN_SET(Symbol, @symbols_set) > 0;

SELECT
    DATE_FORMAT(TimeMsc, "%d/%m/%Y") AS Date,
    Symbol,
    (SELECT SUM(Price) FROM temp_deals dap WHERE dap.TimeMsc BETWEEN Date AND Date + INTERVAL 1 DAY AND dap.Symbol = Symbol) AS AvgPrice
FROM temp_deals
ORDER BY Date;

DROP TABLE IF EXISTS temp_deals;
但结果我在AvgPrice列中得到了NULL。我不明白我做错了什么


看起来我无法将父查询的列传递给子查询,对吗?

请限定您的列名。但大多数情况下,不要使用字符串来比较日期:

SELECT DATE_FORMAT(d.TimeMsc, '%d/%m/%Y') AS Date,
       d.Symbol,
       (SELECT SUM(dap.Price)
        FROM temp_deals dap
        WHERE dap.TimeMsc >= d.TimeMsc AND
              dap.TimeMsc < d.TimeMsc + INTERVAL 2 DAY AND  -- not sure if you want 1 day or 2 day
              dap.Symbol = d.Symbol
       ) AS AvgPrice
FROM temp_deals d
ORDER BY d.TimeMsc;

您正在子查询中使用列Date,代码有效?@forpas是的,此查询执行时没有任何语法错误。但结果是完全错误的: