2017-05-24 52 views
1

我想創建一個具有靜態行數的報表。Transact-SQL強制加入?

表#1字段#1是我們目前銷售的所有物品的清單。 表#2字段#1我們有一個我們銷售的所有地點的列表。 表#3包含了所有的銷售日期,包括商品代碼和地區代碼

我現在有一個選擇,給我所有不同項目編號的列表(可以說他們1000)

臨走前加入銷售來自表#3的數據我想找到一種方法來增加我的行數,併爲每個項目的每個位置創建一個不同的行。

I.e.如果我有1000個項目和10個地點,我想要有10,000個行,以便我可以將銷售日期加入項目編號&位置代碼。我想這樣,所以即使沒有銷售數據,我也會有一排。

由於我們並未銷售每個位置的每件商品,因此銷售表的左連接無法完成此操作。 **帶位置的表格沒有與Item表格加入ON的公共字段。有沒有一種不同的JOIN或不同的SQL函數來完成這一點?

謝謝!

+3

yup'CROSS JOIN' – Lamak

回答

1

您可以使用cross joinleft 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,然後聚集是沒有必要的。

+0

完美!我知道必須有一種方法。謝謝!! – Rkindred