【发布时间】:2020-11-27 13:10:12
【问题描述】:
我有一个名为 Errorlogs 的表,其中包含以下数据
+----+-------------+------------+
| ID | sps_Bereich | Date |
+----+-------------+------------+
| 10 | helpeu1 | 2020-07-31 |
+----+-------------+------------+
| 11 | helpeu2 | 2020-07-31 |
+----+-------------+------------+
| 12 | helpeu3 | 2020-07-31 |
+----+-------------+------------+
| 13 | helpeu3 | 2020-07-31 |
+----+-------------+------------+
| 14 | helpeu4 | 2020-07-31 |
+----+-------------+------------+
| 15 | helpeu3 | 2020-07-30 |
+----+-------------+------------+
| 16 | helpeu4 | 2020-07-30 |
+----+-------------+------------+
| 17 | helpeu4 | 2020-07-30 |
+----+-------------+------------+
| 18 | helpeu4 | 2020-07-30 |
+----+-------------+------------+
我还有另一张桌子叫Bereich
+----+---------+
| ID | Name |
+----+---------+
| 1 | helpeu1 |
+----+---------+
| 2 | helpeu2 |
+----+---------+
| 3 | helpeu3 |
+----+---------+
| 4 | helpeu4 |
+----+---------+
我想按 sps_bereich 和 Date 分组,我正在使用以下查询
select sps_bereich, [Date], count(*) as [Nr of errors] from [ErrorLogs]
where SPS_Bereich IN (
select Name from [Bereich]
)
group by SPS_Bereich, Date
order by date desc, SPS_Bereich asc
它给了我以下输出。
+-------------+------------+--------------+
| sps_bereich | Date | Nr of errors |
+-------------+------------+--------------+
| helpeu1 | 2020-07-31 | 1 |
+-------------+------------+--------------+
| helpeu2 | 2020-07-31 | 1 |
+-------------+------------+--------------+
| helpeu3 | 2020-07-31 | 2 |
+-------------+------------+--------------+
| helpeu4 | 2020-07-31 | 1 |
+-------------+------------+--------------+
| helpeu3 | 2020-07-30 | 1 |
+-------------+------------+--------------+
| helpeu4 | 2020-07-30 | 3 |
+-------------+------------+--------------+
我想要的是在没有数据的地方包含sps_bereich。
在这种情况下,我想将helpeu1,helpeu2 添加为0 日期2020-07-30
我想要以下输出。
+-------------+------------+--------------+
| sps_bereich | Date | Nr of errors |
+-------------+------------+--------------+
| helpeu1 | 2020-07-31 | 1 |
+-------------+------------+--------------+
| helpeu2 | 2020-07-31 | 1 |
+-------------+------------+--------------+
| helpeu3 | 2020-07-31 | 2 |
+-------------+------------+--------------+
| helpeu4 | 2020-07-31 | 1 |
+-------------+------------+--------------+
| helpeu1 | 2020-07-30 | 0 |
+-------------+------------+--------------+
| helpeu2 | 2020-07-30 | 0 |
+-------------+------------+--------------+
| helpeu3 | 2020-07-30 | 1 |
+-------------+------------+--------------+
| helpeu4 | 2020-07-30 | 3 |
+-------------+------------+--------------+
我在想添加一个 IN 子句必须返回所有值,但事实并非如此。
这里是SQLFiddle。
【问题讨论】:
-
你想为每对夫妇的名字\日期添加一个日期,还是只为每个名字添加一个日期?
-
@Massimo 对于每个名称,当错误日志中不存在的日期超过 0 时。所以是的,我想为每个名称添加一个日期。
-
我认为我编辑我的帖子有混淆。
-
没有混淆,说有第五个名字在任何日期都没有日志。它应该为每个日期列出还是只列出一个?
-
@Massimo 我已经删除了第 5 个名称,但如果有第 5 个名称,则输出必须包含日期为 2020-07-31 和 2020-07-30 的 helpeu5 --0。所以对于每个日期,最终输出中都必须有一个名称为 0。
标签: sql sql-server sql-server-2008 group-by