【发布时间】:2021-04-04 22:29:23
【问题描述】:
我有一个具有以下架构的表:
CREATE TABLE transaction_tbl (
_id INTEGER PRIMARY KEY,
date TEXT NOT NULL,
category INTEGER NOT NULL,
amount REAL NOT NULL,
FOREIGN KEY(category) REFERENCES category_tbl(_id)
);
我希望能够选择类别和按周分组(基于date),并包括没有为该类别进行交易的周。
通过以下内容,我可以看到任何类别下的一些交易都存在相关的周数:
sqlite> select distinct strftime('%Y/%W',replace(date,'/','-')) as span from transaction_tbl;
span
<snip>
2020/37
2020/38
2020/39
2020/40
2020/41
<snip>
但是,当使用它作为一个临时表来左连接时,“2020/39”周不会显示:
sqlite> with spans as (select distinct strftime('%Y/%W',replace(date,'/','-')) as span from transaction_tbl) select span, category, sum(coalesce(amount, 0)) as sum from spans left join transaction_tbl tt on span=strftime('%Y/%W',replace(date,'/','-')) where category in (13) group by span, category;
span|category|sum
<snip>
2020/37|13|XXX
2020/38|13|XXX
<-- This '2020/29|13|0' row should appear but does not
2020/40|13|XXX
2020/41|13|XXX
<snip>
只是一个例子,我的 .sqlite_history 文件有很多不工作的例子......
如果找到其他一些 SO 问题,它看起来像左连接的右表中的空行,包括临时表应该包含但它似乎不适用于我。由于我无法锻炼的原因。
【问题讨论】: