Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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 如何对此查询进行分组_Mysql_Sql - Fatal编程技术网

Mysql 如何对此查询进行分组

Mysql 如何对此查询进行分组,mysql,sql,Mysql,Sql,我有疑问 SELECT fdl.fdlDate,t.tankName,SUM(fdl.fdlMeter-lfdl.fdlMeter) AS fdlMeter ,(SELECT IFNULL(SUM(fdtCapa),0) FROM `fueldisptest` WHERE fdtDate = fdl.fdlDate AND compID = "DDY") AS fdtCapa FROM `tanks` AS t INNER JOIN `fueldisps` AS fd ON fd.tankID

我有疑问

SELECT fdl.fdlDate,t.tankName,SUM(fdl.fdlMeter-lfdl.fdlMeter) AS fdlMeter ,(SELECT IFNULL(SUM(fdtCapa),0) FROM `fueldisptest` WHERE fdtDate = fdl.fdlDate AND compID = "DDY") AS fdtCapa
FROM `tanks` AS t
INNER JOIN `fueldisps` AS fd ON fd.tankID = t.tankID
INNER JOIN `fueldisplogs` AS fdl ON fdl.fuelDispID = fd.fuelDispID 
INNER JOIN `fueldisplogs` AS lfdl ON lfdl.fuelDispID = fd.fuelDispID AND lfdl.fdlDate = SUBDATE(fdl.fdlDate,1)
WHERE  (fdl.fdlDate BETWEEN "2016-01-01" AND "2016-01-31")
AND (lfdl.fdlDate BETWEEN "2015-12-31" AND "2016-01-30")
AND t.compID = "DDY" AND fd.compID = "DDY" AND fdl.compID = "DDY" AND lfdl.compID = "DDY"
GROUP BY fdl.fdlDate,t.tankID
ORDER BY fdl.fdlDate,t.tankID,fd.fuelDispID
LIMIT 0,100
它给出了这样的结果

fdlDate    |  tankName    |  fdlMeter     |  fdtCapa  
-----------------------------------------------------
2016-01-01 | T1           | 100.00        | 0
2016-01-01 | T2           | 200.00        | 0
2016-01-01 | T3           | 300.00        | 0
2016-01-01 | T4           | 400.00        | 0
2016-01-02 | T1           | 200.00        | 0
2016-01-02 | T2           | 300.00        | 0
2016-01-02 | T3           | 400.00        | 0
2016-01-02 | T4           | 500.00        | 0
...
fdlDate    |  fdlMeter                      |  fdtCapa  
----------------------------------------------------------------------
2016-01-01 | 100.00,200.00,300.00,400.00    | 0
2016-01-02 | 200.00,300.00,400.00,500.00    | 0
...
但我想用GROUP_CONCAT得出这样的结果

fdlDate    |  tankName    |  fdlMeter     |  fdtCapa  
-----------------------------------------------------
2016-01-01 | T1           | 100.00        | 0
2016-01-01 | T2           | 200.00        | 0
2016-01-01 | T3           | 300.00        | 0
2016-01-01 | T4           | 400.00        | 0
2016-01-02 | T1           | 200.00        | 0
2016-01-02 | T2           | 300.00        | 0
2016-01-02 | T3           | 400.00        | 0
2016-01-02 | T4           | 500.00        | 0
...
fdlDate    |  fdlMeter                      |  fdtCapa  
----------------------------------------------------------------------
2016-01-01 | 100.00,200.00,300.00,400.00    | 0
2016-01-02 | 200.00,300.00,400.00,500.00    | 0
...
如何编辑我的查询以获得此结果?
谢谢。

您可以在结果的顶部添加
Group\u Concat

试试这个

SELECT fdlDate,
       group_concat(lfdlMeter order by tankName  separator ',') as fdlMeter,      
       fdtCapa
FROM   (SELECT fdl.fdlDate,
               t.tankName,
               Sum(fdl.fdlMeter - lfdl.fdlMeter) AS lfdlMeter,
               (SELECT Ifnull(Sum(fdtCapa), 0)
                FROM   fueldisptest
                WHERE  fdtDate = fdl.fdlDate
                       AND compID = "DDY")       AS fdtCapa
        FROM   tanks AS t
               INNER JOIN fueldisps AS fd
                       ON fd.tankID = t.tankID
               INNER JOIN fueldisplogs AS fdl
                       ON fdl.fuelDispID = fd.fuelDispID
               INNER JOIN fueldisplogs AS lfdl
                       ON lfdl.fuelDispID = fd.fuelDispID
                          AND lfdl.fdlDate = Subdate(fdl.fdlDate, 1)
        WHERE  ( fdl.fdlDate BETWEEN "2016-01-01" AND "2016-01-31" )
               AND ( lfdl.fdlDate BETWEEN "2015-12-31" AND "2016-01-30" )
               AND t.compID = "DDY"
               AND fd.compID = "DDY"
               AND fdl.compID = "DDY"
               AND lfdl.compID = "DDY"
        GROUP  BY fdl.fdlDate,
                  t.tankID
        ORDER  BY fdl.fdlDate,
                  t.tankID,
                  fd.fuelDispID) s
GROUP  BY fdlDate,
          fdtCapa 
LIMIT 0,100

您使用的是什么数据库管理系统?那里有很多非ANSI SQL…@sagi dbms是MySQL。#1054-字段列表中的未知列“fdlMeter”