保留组中的第一条记录并在 SQL 中用 Null/0 填充其余记录?
Keep first record in group and populate rest with Null/0 in SQL?
我的数据库中有以下 table:
date sales
1 2010-12-13 10
2 2010-12-13 10
3 2010-12-13 10
4 2010-12-13 10
5 2010-12-13 10
6 2010-12-14 20
7 2010-12-14 20
8 2010-12-14 20
9 2010-12-14 20
10 2010-12-14 20
有没有办法只获取第一条记录,然后用 NULL 或 0 填充其余记录?因为分组将按日期和销售额进行:
例如预期的输出是:
date sales
1 2010-12-13 10
2 2010-12-13 0
3 2010-12-13 0
4 2010-12-13 0
5 2010-12-13 0
6 2010-12-14 20
7 2010-12-14 0
8 2010-12-14 0
9 2010-12-14 0
10 2010-12-14 0
所以本质上是保留第一条记录,但使组中的其余记录为 0(如果是 quicker/easier,则可能为 Null)
我最接近解决这个问题的方法是通过内部连接获得第一条记录 - 但我认为分区可能会解决它 - 目前只是卡住了!
感谢任何帮助!
使用 SQLite - 我也可以访问 GCP (SQL)
这可能适用于 SQLite:
CASE WHEN id = MIN(id) OVER(PARTITION BY date) THEN sales ELSE 0 END as sales
如果没有,您可以准备一个每个日期只有最小 ID 的子查询并将其加入:
SELECT
CASE WHEN y.id IS NULL THEN 0 ELSE sales END as sales
FROM
x
LEFT JOIN (SELECT MIN(id) as id FROM x GROUP BY date) y ON x.id= y.id
我的数据库中有以下 table:
date sales
1 2010-12-13 10
2 2010-12-13 10
3 2010-12-13 10
4 2010-12-13 10
5 2010-12-13 10
6 2010-12-14 20
7 2010-12-14 20
8 2010-12-14 20
9 2010-12-14 20
10 2010-12-14 20
有没有办法只获取第一条记录,然后用 NULL 或 0 填充其余记录?因为分组将按日期和销售额进行:
例如预期的输出是:
date sales
1 2010-12-13 10
2 2010-12-13 0
3 2010-12-13 0
4 2010-12-13 0
5 2010-12-13 0
6 2010-12-14 20
7 2010-12-14 0
8 2010-12-14 0
9 2010-12-14 0
10 2010-12-14 0
所以本质上是保留第一条记录,但使组中的其余记录为 0(如果是 quicker/easier,则可能为 Null)
我最接近解决这个问题的方法是通过内部连接获得第一条记录 - 但我认为分区可能会解决它 - 目前只是卡住了!
感谢任何帮助!
使用 SQLite - 我也可以访问 GCP (SQL)
这可能适用于 SQLite:
CASE WHEN id = MIN(id) OVER(PARTITION BY date) THEN sales ELSE 0 END as sales
如果没有,您可以准备一个每个日期只有最小 ID 的子查询并将其加入:
SELECT
CASE WHEN y.id IS NULL THEN 0 ELSE sales END as sales
FROM
x
LEFT JOIN (SELECT MIN(id) as id FROM x GROUP BY date) y ON x.id= y.id