我尝试创建一个静态行数的报告。
表#1字段#1是我们目前销售的所有商品的列表。 表#2字段#1我们列出了我们销售的所有地点。 表#3包含所有销售日期,包括项目编号和位置代码
我目前有一个选择给我一个列出所有不同的项目编号(让我们说1000个)
在我离开之前加入表#3中的销售数据我希望找到一种方法来增加行数,并为每个项目的每个位置创建一个明确的行。
即。如果我有1000个项目和10个位置,我想拥有10,000行,这样我就可以将加入销售日期保留为项目编号&位置代码。我想这样,所以即使没有销售数据,我也会有一排。
由于我们没有销售每个地点的每个商品,因此销售表中的左连接无法实现此目的。 **此外,带位置的表没有与要加入ON的项目表的公共字段。是否有不同类型的JOIN或不同的SQL函数来实现此目的?
谢谢!
答案 0 :(得分:1)
您可以使用cross join
和left join
。例如,总结销售额:
select i.itemid, l.locationid, sum(t.sales)
from items i cross join
locations l left join
table3 t
on i.itemid = t.itemid and l.locationid = t.locationid
group by i.itemid, l.locationid
order by i.itemid, l.locationid;
如果table3
中只有一行,则无需进行聚合。