TSQL查找缺失值

时间:2013-09-24 16:26:42

标签: sql sql-server database tsql sql-server-2008-r2

我有两张桌子:

TableA是我们应该拥有每家公司销售数据的所有可能周的日历。

TableB包含已报告的每家公司每周销售额的财务数据。

TableA列

[cmp_code, Year, Week]

TAbleB专栏

[cmp_code, Year, Week, sales]

查询标准:

1)所有公司的当年和上一年的表B缺少列表周

2)列出该公司的上一年销售额和周数(如果存在)。 (示例cmp 1234缺少2013年第13周,因此显示2012年该周的值)

我已经尝试过连接,但我要么返回0值,要么返回数百万个值。我真的不知道从哪里开始。

我是SQL的新手,非常感谢提供的任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:2)

这是一种方式:

SELECT TableA.*, bPrev.sales
FROM TableA
LEFT OUTER JOIN TableB
   ON  TableA.cmp_code = TableB.cmp_code
   And TableA.[Year]   = TableB.[Year]
   And TableA.[Week]   = TableB.[Week]
LEFT OUTER JOIN TableB As bPrev
   ON  TableA.cmp_code = bPrev.cmp_code
   And TableA.[Year]   = bPrev.[Year]+1
   And TableA.[Week]   = bPrev.[Week]
WHERE TableB.cmp_code IS NULL