【问题标题】:Mysql set label to Rollup or a similar GROUPING function like sql serverMysql 将标签设置为 Rollup 或类似的 GROUPING 函数,如 sql server
【发布时间】:2013-01-24 14:36:28
【问题描述】:

ROLLUP有问题,行有空值,ROLLUP也返回null,如何区分ROLLUP的空值和行的空值?

行中存在空值是因为列 (group_name) 与左连接相关联。

这是我的查询:

SELECT gr.info,  
  HOUR(cdr.calldate) AS hour,     
  DATE(cdr.calldate) AS date,     
  COUNT(DISTINCT cdr.uniqueid) AS count,  
  pl.number,  
  IFNULL(ugr.group_name, "") AS group_name 
FROM cdr 
INNER JOIN callinfo AS ci 
  ON ci.uniqueid = cdr.uniqueid 
LEFT JOIN users AS usr 
  ON usr.username = ci.agent 
LEFT JOIN groups AS ugr 
  ON ugr.group_id = usr.group_id 
INNER JOIN pstnline AS pl 
  ON ci.line = pl.number 
INNER JOIN hunt_line AS gri 
  ON gri.pstnline_id = pl.pstnline_id 
INNER JOIN hunt AS gr 
  ON gri.hunt_number = gr.number 
WHERE cdr.calldate >='2012-12-01 00:00'
  AND cdr.calldate <='2013-01-24 10:45'
GROUP BY group_name WITH ROLLUP

我看到SQL Server中有一个叫GROUPING的函数,但是在MySql中不存在,我怎样才能达到同样的效果呢?

【问题讨论】:

  • 神圣的意识流。格式化查询,使其可读,因为更容易阅读 == 更容易提供帮助。

标签: mysql sql function grouping rollup


【解决方案1】:

我认为您也可以在查询中执行此操作,方法是将 group by 参数更改为:

group by ifnull(ugr.group_name, '')

现在,空格将表示来自 outer join 的 NULL,而 NULL 将表示汇总。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 2013-09-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多