我想要将两个表组合成一个表。它们有一些共同的列,但我无法弄清楚如何正确组合它们。
样品:
表A
Month | Year | Costumer_ID | Total_A |
--------------------------------------
10 | 2014 | 222 | 50 |
1 | 2015 | 111 | 100 |
2 | 2015 | 111 | 200 |
4 | 2015 | 222 | 250 |
表B
Month | Year | Costumer_ID | Total_B |
--------------------------------------
1 | 2015 | 111 | 50 |
2 | 2015 | 333 | 100 |
4 | 2015 | 222 | 250 |
期望的结果
Month | Year | Costumer_ID | Total_A | Total_B |
------------------------------------------------
10 | 2014 | 222 | 50 | 0 |
1 | 2015 | 111 | 100 | 50 |
2 | 2015 | 111 | 200 | 0 |
2 | 2015 | 333 | 0 | 100 |
4 | 2015 | 222 | 250 | 250 |
逻辑如下:
如果客户的Total_A不为零,则在每年每个月的表A中,表中会有一条记录。因此,并非每年的所有月份都有每个客户的记录。
表B的工作方式与表A相同,但Total_B与Total_A不同。因此,对于特定的月份和年份,客户可能只在一个表中,在两个表中都没有记录。
我想生成一个表,其中包含每年每个月的每个客户的记录。如果表A或表B中有相应的记录,则每个表的Total_A和Total_B将显示在结果表中。如果在任何表中该特定月份和年份中没有该特定客户的记录,则结果表中的Total_A或/和Total_B将为零。
答案 0 :(得分:3)
这看起来像full outer join
。可以使用0
生成coalesce
:
SELECT COALESCE(a.month, b.month) AS month,
COALESCE(a.year, b.year) AS year,
COALESCE(a.customerid, b.customerid) AS customerid,
COALESCE(total_a, 0) AS total_a,
COALESCE(total_b, 0) AS total_b
FROM a
FULL OUTER JOIN b ON a.month = b.month AND
a.year = b.year AND
a.customerid = b.customerid
答案 1 :(得分:1)
执行$Service = Get-WmiObject -Class Win32_Service -computer REMOTESERVER -filter "name='SERVICENAME'"
$service.change($null,$null,$null,$null,$null,$null,$null,"newpasswordhere")
,使用FULL OUTER JOIN
获取0而不是NULL。
COALESCE