首页 > 解决方案 > Sqlite通过Union by Groups加入2个表

问题描述

我有一个每天更新的数据表“数据表”。

DATATABLE
Shop    Manager    Sales    Date
1       A          100      20181217
1       B          120      20181217
2       C          110      20181217
2       D          105      20181217
1       A          100      20181218

数据会定期清理并放入具有相同列的“可清理”中。我正在尝试创建一个合并这两个表的视图表,并在可用时为我提供已清理的数据,否则为未清理的数据。

CLEANTABLE
Shop    Manager    Sales    Date
1       A          101      20181217
1       B          121      20181217

我可以通过工会为 1 家商店和 1 位经理做到这一点。

select * from cleantable where Shop = 1 and Manager = 'A' 
union
select * from datatable where Shop = 1 and Manager = 'A' where Date > 
(select max(Date) from cleantable where Shop = 1 and Manager = 'A')

每个商店和经理的清洁日期是不同的。

是否有一种简单的方法可以编写一个处理所有商店/经理组合的查询。

理想情况下,如果特定的商店/经理组合没有干净的数据,它也应该工作。

DESIRED OUTPUT
Shop    Manager    Sales    Date
1       A          101      20181217
1       B          121      20181217
2       C          110      20181217
2       D          105      20181217
1       A          100      20181218

标签: sqlite

解决方案


如果您可以与一家商店和一位经理一起做,那么您可以为所有人做这件事。示例查询中的限制是where Shop = 1 and Manager = 'A'.

如果您摆脱了它(无处不在),那么您只有一个障碍:在 UNION 查询中将可清洁表与数据表“加入”。你怎么能那样做?类似于子查询中的东西where cleantable.shop = datatable.shop AND cleantable.manager = datatable.manager


推荐阅读