这个错误似乎很简单,你不能这样做的原因是没有任何分组就没有意义。想象一下以下数据集:
+-------+------------+
| ID | Status |
|-------+------------+
| 1 | Accepted |
| 2 | Pending |
| 3 | Accepted |
| 4 | Overdue |
+-------+------------+
如果要在表达式中添加第三列,它将是 SQL 等效项
SELECT ID, Status, COUNT(CASE WHEN Status = 'Accepted' THEN 1 END)
FROM T
没有 group by this 是无效的语法。您可以使用计数表达式添加报表字段,但不能在数据集中添加计算字段。您尝试制作的数据集如下:
+-------+------------+----------+
| ID | Status | Accepted |
|-------+------------+----------+
| 1 | Accepted | 2 |
| 2 | Pending | 2 |
| 3 | Accepted | 2 |
| 4 | Overdue | 2 |
+-------+------------+----------+
为所有行重复该值并没有真正意义,但是您可以使用窗口函数在 SQL 中执行此操作:
SELECT ID,
Status,
Accepted = COUNT(CASE WHEN Status = 'Accepted' THEN 1 END) OVER()
FROM T;