我有两个表,我在日期列中将它们连接在一起。除了一个表缺少日期之外,这很有用。
即表2,我没有10.10.2016。我仍然希望这条线出现在结果中,因为这是我希望显示没有活动的一天。
这是一个酒吧:我有一张桌子,他们在啤酒水龙头上记录了点数,还有一张记录了已售出的点数。
如果他们有一天关闭,他们实际上并没有卖任何东西,但为了以防万一,他们仍然希望工作人员记录抽头啤酒的数量。
2016年10月10日的数据将是这样的:
表1(销售,未开放10.10 =根本没有存储数据)
Date Sold
10.08 22
10.09 31
10.11 54
表2(点击,他们每天计算=有数据10.10)
Date Tapped
10.08 23
10.09 31
10.10 0
10.11 54
我希望结果显示如下:
Date Tapped Sold Diff
10.08 23 22 1
10.09 31 31 0
10.10 0 0 0
10.11 54 54 0
但我不能让这个工作,因为当我加入表2时,它无法连接10.10中的“已售出”和“轻拍”,因为我没有办法加工它们。
有没有办法做到这一点?
答案 0 :(得分:1)
CREATE TABLE #A
(
DATE NUMERIC
(22,6),SOLD INT
)
INSERT INTO #A VALUES
(10.08,22),
(10.09,31),
(10.11,54)
CREATE TABLE #B
(
DATE NUMERIC
(22,6),TAPPED INT
)
INSERT INTO #B VALUES
(10.08,23),
(10.09,31),
(10.10,0),
(10.11,54)
SELECT A.DATE,A.TAPPED,ISNULL(B.SOLD,0)SOLD,A.TAPPED-ISNULL(B.SOLD,0) AS DIFFRENCE
FROM #B A LEFT JOIN #A B ON A.DATE=B.DATE
答案 1 :(得分:0)
使用left
或right join
。
以下示例显示了如何使用RIGHT JOIN
。
SELECT t2.Date,t2.Tapped,ISNULL(t1.sold,0) sold,t2.Tapped-ISNULL(t1.sold,0) as Diff
FROM Table1 t1
RIGHT JOIN Table2 t2
ON t1.Date=t2.Date
答案 2 :(得分:0)
简单陈述
SELECT tapped.date as date, IFNULL(tapped.tapped,0) as tapped, IFNULL(sales.sold,0) as sold, IFNULL(tapped.tapped - sales.sold,0) as diff
FROM
tapped
LEFT OUTER JOIN sales ON sales.date = tapped.date
ORDER BY
tapped.date ASC