我的SQL Server 2008中有两个表。一个是项目列表,另一个是项目流,如下所示:
项目表:
item_id item_name
--------------------
1 item1
2 item2
3 item3
和流程表:
date item_id qty
-------------------------
2014-10-15 1 5
2014-10-15 2 3
2014-10-16 1 7
2014-10-17 1 4
2014-10-17 2 2
2014-10-17 3 1
如何在项目表中选择每个数据而流表中没有记录,这样我就可以得到如下结果:
date item qty
-----------------------
2014-10-15 item1 5
2014-10-15 item2 3
2014-10-15 item3 0
2014-10-16 item1 7
2014-10-16 item2 0
2014-10-16 item3 0
2014-10-17 item1 4
2014-10-17 item2 2
2014-10-17 item3 1
答案 0 :(得分:0)
您可能正在寻找cross join
和left join
SELECT dt.date, item.item_name, ISNULL(flow.qty,0)
FROM item CROSS JOIN (SELECT DISTINCT date from flow) dt
LEFT JOIN flow on item.item_id=flow.item_id and dt.date=flow.date
ORDER BY dt.date, item.item_name
这个解决方案可能有一个更优雅的选择,也许你可能会在以后找到它。 =)