Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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中使用GROUP_CONCAT并考虑null_Mysql_Concat_Group Concat - Fatal编程技术网

在MySQL中使用GROUP_CONCAT并考虑null

在MySQL中使用GROUP_CONCAT并考虑null,mysql,concat,group-concat,Mysql,Concat,Group Concat,我有一个有3个字段的表。此表记录了过去30天内每天到相关国家/地区的通话持续时间 C_Date Country C_Time 2012-10-01 India 1316 2012-10-01 USA 12 2012-10-01 UK 132 2012-10-01 Kuwait 134 2012-10-02 UK 135

我有一个有3个字段的表。此表记录了过去30天内每天到相关国家/地区的通话持续时间

C_Date      Country         C_Time  
2012-10-01  India           1316
2012-10-01  USA             12  
2012-10-01  UK              132     
2012-10-01  Kuwait          134     
2012-10-02  UK              135     
2012-10-02  USA             136     
2012-10-02  Singapore       137     
我需要使用这些记录生成一个表和一个折线图,并尝试编写MySQL查询。基本上,我只需要为选定的国家绘制此图。
说我想要印度、美国和英国;然后我需要像这样拉一个记录集:

C_Date     | Calling_Time
-----------+----------------------------------
2012-10-01 | 1316,12,132
2012-10-02 | 0,136,135
2012-10-03 | ...
...        | ...
这是我的疑问:

SELECT C_Date, GROUP_CONCAT(C_Time
ORDER BY Country
SEPARATOR ',') as Calling_Time
FROM Call_Table t
WHERE Country
IN ('India', 'USA', 'UK')
GROUP BY C_Date
ORDER BY  C_Date
结果更接近,但它忽略了空结果

C_Date     | Calling_Time
-----------+----------------------------------
2012-10-01 | 1316,12,132
2012-10-02 | 136,135   (expected 0,136,135)
我是否可以更改查询以获取呼叫时间,如0136135,136135null,136135?(具有代表每个国家的唯一段数)

提前谢谢

试试这个查询-

SELECT
  C_Date,
  CONCAT(MAX(IF(country = 'India', C_Time, 0)), ',',
         MAX(IF(country = 'USA', C_Time, 0)), ',',
         MAX(IF(country = 'UK', C_Time, 0))) Calling_Time
  FROM call_table
  GROUP BY C_Date

+------------+--------------+
| C_Date     | Calling_Time |
+------------+--------------+
| 2012-10-01 | 1316,12,132  |
| 2012-10-02 | 0,136,135    |
+------------+--------------+
请尝试此查询-

SELECT
  C_Date,
  CONCAT(MAX(IF(country = 'India', C_Time, 0)), ',',
         MAX(IF(country = 'USA', C_Time, 0)), ',',
         MAX(IF(country = 'UK', C_Time, 0))) Calling_Time
  FROM call_table
  GROUP BY C_Date

+------------+--------------+
| C_Date     | Calling_Time |
+------------+--------------+
| 2012-10-01 | 1316,12,132  |
| 2012-10-02 | 0,136,135    |
+------------+--------------+