0

ROLLUPに問題があり、null値の行があり、ROLLUPもnullを返します。ROLLUPのnull値と行のnull値をどのように区別しますか?

列(group_name)が左結合に関連付けられているため、行にnullが存在します。

これが私の質問です:

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には存在しないのですが、どうすれば同じ効果を得ることができますか?

4

1 に答える 1

0

group by 引数を次のように変更することで、クエリでこれを行うこともできると思います。

group by ifnull(ugr.group_name, '')

現在、空白は からのouter joinNULL を示し、NULL はロールアップを示します。

于 2013-01-24T14:47:32.063 に答える