条件所在的Sql server

时间:2016-10-17 14:18:43

标签: sql sql-server tsql

我有一个查询

select idpays,idannonce,idville 
from annonces

我需要在其中idpays=1显示idville null其他idpays显示idville {{ 1}}

我该怎么办呢?

问候

4 个答案:

答案 0 :(得分:3)

你可能正在寻找这个

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

答案 1 :(得分:1)

如果您的idpays列包含NULL值:

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

如果您要为idpays = 1和为idpays&lt;&gt;找到NULL 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)

答案 2 :(得分:0)

当idpays = 1时,你没有指定应该显示什么,但是这里是你问的基础 - 你可以用SELECT中的一个案例来做这个,这听起来更像是你的问题描述而不是where子句:

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

基于OP评论的编辑 - 必须承认我不确定我是否完全了解OP的要求:

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

答案 3 :(得分:0)

尝试使用CASE功能。我根本不认为你需要ELSE声明:

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