为空值和汇总重命名NULL的SQL
我正在尝试制作一个仪表板,以按优先级显示打开的票证以及分配给谁。数据集如下所示:为空值和汇总重命名NULL的SQL,sql,rollup,Sql,Rollup,我正在尝试制作一个仪表板,以按优先级显示打开的票证以及分配给谁。数据集如下所示: |-------------------------| | Assigned | Priority | |-------------------------| | JOE | Low | | JOE | Medium | | MARY | High | | | Medium | | TIM
|-------------------------|
| Assigned | Priority |
|-------------------------|
| JOE | Low |
| JOE | Medium |
| MARY | High |
| | Medium |
| TIM | Low |
| Mary | High |
我想得到的报告是:
|---------------------------------------------------------|
| Employee | Low | Medium | High | Total |
|---------------------------------------------------------|
| Total | 2 | 2 | 2 | 6 |
| Unassigned | 0 | 1 | 0 | 1 |
| MARY | 0 | 0 | 2 | 2 |
| JOE | 1 | 1 | 0 | 2 |
| TIM | 1 | 0 | 0 | 1 |
通过这个查询,我可以得到所有信息
SELECT
CASE WHEN Assigned is null then 'Unassigned' Else Assigned End Employee
, SUM(CASE WHEN Priority = 'Low' THEN 1 ELSE 0 END) AS Low
, SUM(CASE WHEN Priority = 'Medium' THEN 1 ELSE 0 END) AS Medium
, SUM(CASE WHEN Priority = 'High' THEN 1 ELSE 0 END) AS High
, count(Priority) AS Total
FROM table
GROUP BY Assigned WITH ROLLUP
ORDER BY Assigned ASC
然而,通过这种方式,它将任何为NULL的内容重命名为Unassigned。这是完美的给我的未赋值值,没有任何人在指定的领域,但我的总列也显示未赋值。如何将其重命名为Total
提前谢谢 您需要这样使用:
:
| EMPLOYEE | LOW | MEDIUM | HIGH | TOTAL |
|------------|-----|--------|------|-------|
| Unassigned | 0 | 1 | 0 | 1 |
| JOE | 1 | 1 | 0 | 2 |
| MARY | 0 | 0 | 2 | 2 |
| TIM | 1 | 0 | 0 | 1 |
| Total | 2 | 2 | 2 | 6 |
你的关系数据库管理系统是什么:SQL Server、Oracle、MySQL等等?我不完全理解你的问题?您的
Total
列应该显示每条记录的计数,而不是单词Unassigned
。另外,您可以将CASE
语句更改为justCOALESCE(Assigned,'Unassigned')
。
| EMPLOYEE | LOW | MEDIUM | HIGH | TOTAL |
|------------|-----|--------|------|-------|
| Unassigned | 0 | 1 | 0 | 1 |
| JOE | 1 | 1 | 0 | 2 |
| MARY | 0 | 0 | 2 | 2 |
| TIM | 1 | 0 | 0 | 1 |
| Total | 2 | 2 | 2 | 6 |