我正在尋找一種方法來獲得3個表之間的差異。我不能做的主要任務是比較一個列表形式的表,並取決於它包含什麼,它與2列的表b和c相比較。 一個例子闡明我想要做的事:比較一列與其他2列
Table A:
IpAddress |HostName
10.10.01.10 | somethingtada
255.255.255.1| something.else
Table B:
IpAddress |HostName |Name
10.10.01.10 |somethingtada.tada |somethingtada
Table C:
IpAddress |HostName |Name
255.255.255.1| something.else |something
1.1.1.1 | blabla.tada |tada
,我需要有一個表,顯示我這樣
IpAddress |HostName |TableA|TableB|TableC
10.10.01.10 |somethingtada.tada|1 |1 |0
255.255.255.1|something.else |1 |0 |1
1.1.1.1 |blabla.tada |0 |0 |1
數據,因此如果不夠清楚,當我有一個 」。」在TableA的hostName列中(這種情況總是發生在tableA中),我將它與Hostname和其他表進行比較。但如果沒有「。」在TableA的Hostname中,我將它與其他2個表的列名進行比較。
我有什麼,現在是這樣的:「」
select IPAddress, HostName,
SUM(case when tbl = 'a' then 1 else 0 end) TableB,
SUM(case when tbl = 'b' then 1 else 0 end) TableC,
SUM(case when tbl = 'c' then 1 else 0 end) TableA
from
(
select IPAdress, HostName,'a' tbl
from TableB
union all
select IPAdress, HostName,'b' tbl
from TableC
union all
select IPAdress, HostName,'c' tbl
from TableA
) d
group by IPAddress, HostName
它運作良好,但我不知道如何對別人比對錶取決於是否有一個在TableA的主機名列中。
#EDIT1:
Table A:
IpAddress |HostName
10.10.01.10 | somethingtada
255.255.255.1| something.else
255.10.10.1 | bliblio
1.1.1.1 | tada
2.2.2.2 | tada3.tada
2.2.2.2 | tada5.tada
Table B:
IpAddress |HostName |Name
10.10.01.10 |somethingtada.tada |somethingtada
255.1.1.1 |test3.test |test3
126.126.126.1|test4.test |test4
2.2.2.2 |tada5.tada |tada5
Table C:
IpAddress |HostName |Name
255.255.255.1| something.else |something
1.1.1.1 | blabla.tada |blabla
255.1.1.1 | test3.test |test3
3.3.3.3 | test5.test |test5
,我需要有一個表,顯示我這樣
IpAddress |HostName |TableA|TableB|TableC
10.10.01.10 |somethingtada.tada|1 |1 |0
255.255.255.1|something.else |1 |0 |1
1.1.1.1 |blabla.tada |1 |0 |1
255.10.10.1 |blibio |1 |0 |0
255.1.1.1 |test3.test |0 |1 |1
126.126.126.1|test4.test |0 |1 |0
2.2.2.2 |tada3.tada |1 |0 |0
3.3.3.3 |test5.test |0 |0 |1
2.2.2.2 |tada5.tada |1 |1 |0
由於數據提前
如果'A.HostName'與其他兩個表中的'HostName'和'Name'都不匹配,會發生什麼?輸出應該是什麼? –
我們將看到IpAddress和HostName的數據,在TableB和TableC下我們將有一個「0」,並在表A下我們將有「1」 – JoSav
爲了澄清,我的意思是當'A.IPAddress'匹配無論是「B.IPAddress」還是「C.IPAddress」,但相應的「A.HostName」都不匹配。因此,如果你所說的話仍然存在,輸出將包含該IP地址的多個條目,其中一個使用「TableA = 1」和「TableB = TableC = 0」,其他使用「TableA = 0」並且「TableB = 1」或「TableC = 1」(或兩者)。那是對的嗎? –