2016-10-17 45 views
2

我有一個查詢條件,其中的SQL Server

select idpays,idannonce,idville 
from annonces 

,我需要做一個有條件的地方,在那裏idpays=1不顯示idvillenull別的其他idpays顯示idvillenull

我該怎麼辦這個好嗎?

問候

回答

0

不指定,究竟是什麼,應該當idpays = 1,但在這裏是爲你問什麼是基礎顯示 - 你

select idpays,idannounce, 
     case when idpays=1 then idville 
     else null end 
    from unknowntable 

編輯基於OP評論 - 必須承認我:可以在SELECT的情況下,這聽起來更像是where子句你所描述,而不是一個問題做到這一點不確定我現在正確理解OP的要求:

select 
    from table 
where (idpays<>1) or 
     (idpays=1 and idville not null) 
+0

我有10個IDPays = 1:5 idville nul和5不是null,10個annonces idpays!= 1,我需要10個annonces idpays!= 1和5個idpays 5和idville不是null – user1428798

+0

已編輯盡我所能解釋你的要求。你是說你正在查找idpays = 5的記錄嗎? –

3

你可能在找這個

WHERE (idpays = 1 AND idville NOT NULL) OR idpays > 1 
+1

我認爲這是正確的,但你的回答是假設idpays都是正數;如果情況並非如此,那麼idpays <> 1將是正確的次要條件。 –

0

嘗試使用CASE函數。我不認爲你需要的ELSE語句都:

SELECT idpays, iddonance, 
CASE WHEN idpays = 1 THEN idville END AS idville 
FROM annonces 
1

如果您idpays列包含NULL值:

select idpays,idannonce,idville 
from annonces 
where (idpays = 1 AND idville IS NOT NULL) OR (ISNULL(idpays, 0) <> 1) 

如果您正在尋找NOT NULL值idpays = 1和只對於idpays NULL值<> 1.

select idpays,idannonce,idville 
from annonces 
where (idpays = 1 AND idville IS NOT NULL) OR (ISNULL(idpays, 0) <> 1 AND idville IS NULL)