2014-10-09 82 views
0

SQL Server 2008的顯示數據如果計數(不同)爲0

SQL查詢顯示IP地址(如果存在)

SELECT [IP_ADDR1_TEXT], COUNT(distinct [IP_ADDR1_TEXT]) as Instances 
FROM sem_computer, [dbo].[V_SEM_COMPUTER] 
WHERE sem_computer.COMPUTER_ID = [dbo].[V_SEM_COMPUTER].COMPUTER_ID 
AND [IP_ADDR1_TEXT] = '10.10.10.10' 
GROUP BY [IP_ADDR1_TEXT] 

輸出

IP_ADDR1_TEXT Instances 
10.10.10.10   1 

如果IP地址計數爲0時,輸出一片空白。

如何修改查詢,以便實例輸出0,旁邊不存在的IP地址,即

SELECT [IP_ADDR1_TEXT], COUNT(distinct [IP_ADDR1_TEXT]) as Instances 
FROM sem_computer, [dbo].[V_SEM_COMPUTER] 
WHERE sem_computer.COMPUTER_ID = [dbo].[V_SEM_COMPUTER].COMPUTER_ID 
AND [IP_ADDR1_TEXT] = '10.10.10.11' 
GROUP BY [IP_ADDR1_TEXT] 

應該輸出

IP_ADDR1_TEXT Instances 
10.10.10.11   0 

編輯

VIEW的屏幕截圖

enter image description here

IP_ADDR1_TEXT是一個別名

柱 CAST(CASE WHEN IP_ADDR1 < 0 THEN 0xFFFFFFFF的+ IP_ADDR1 ELSE IP_ADDR1 END/256/256/256 & 0xFF的AS VARCHAR)+ '' + CAST(CASE當IP_ADDR1 < 0 THEN 0xFFFFFFFF + IP_ADDR1 ELSE IP_ADDR1 END/256/256 & 0xFF AS VARCHAR)+'。' + CAST(CASE當IP_ADDR1 < 0 THEN 0xFFFFFFFF + IP_ADDR1 ELSE IP_ADDR1 END/256 & 0xFF AS VARCHAR)+'。' + CAST(CASE WHEN IP_ADDR1 < 0,那麼0xFFFFFFFF的+ IP_ADDR1 ELSE IP_ADDR1 END & 0xFF的AS VARCHAR)

+0

不顯示的原因是因爲您正在使用過時的連接語法將其變爲內部連接。您應該使用較新的ANSI_92語法來進行連接。 – 2014-10-09 18:22:42

回答

1
SELECT [IP_ADDR1_TEXT], COALESCE(COUNT(distinct [IP_ADDR1_TEXT]),0) as Instances 
FROM sem_computer LEFT JOIN [dbo].[V_SEM_COMPUTER] 
    ON sem_computer.COMPUTER_ID = [dbo].[V_SEM_COMPUTER].COMPUTER_ID 
AND [IP_ADDR1_TEXT] = '10.10.10.11' 
GROUP BY [IP_ADDR1_TEXT] 
+0

如果計數爲0,它仍然不顯示。我正在使用MS SQL Server 2008 – Glowie 2014-10-09 17:38:57

+0

Witch表屬於[IP_ADDR1_TEXT]列嗎?如果你選擇並過濾只有一個字段,爲什麼加入這兩個表?你可以發佈表結構嗎? – Max 2014-10-09 17:54:51

+0

查看更新後的問題 – Glowie 2014-10-09 18:15:18

0

也許試試這個:

SELECT [IP_ADDR1_TEXT], COUNT(distinct [IP_ADDR1_TEXT]) as Instances 
FROM sem_computer 
Left JOin [dbo].[V_SEM_COMPUTER] On sem_computer.COMPUTER_ID = [dbo].[V_SEM_COMPUTER].COMPUTER_ID 
WHERE [IP_ADDR1_TEXT] = '10.10.10.10' 
GROUP BY [IP_ADDR1_TEXT] 
+0

如果count爲0,則不顯示 – Glowie 2014-10-09 19:38:56

+0

@Glowie好像你已經得到了答案。我忘了在Instances列上添加IsNull()檢查。 – 2014-10-09 20:19:32