簡體   English   中英

如何GROUP_CONCAT這個查詢

[英]How to GROUP_CONCAT this query

我有疑問。

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
...

但是我想使用GROUP_CONCAT來得到這樣的結果。

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

嘗試這個

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM