2016-10-17 2 views
2

ich eine Abfragebedingt auf die SQL Server

select idpays,idannonce,idville 
from annonces 

und ich ein bedingtes muß dafür haben, wo, wo idpays=1 nicht idvillenull sonst zeigen zeigen für andere idpaysidvillenull

Wie kann ich tun das bitte?

Grüße

Antwort

0

Sie geben nicht, was, sollte genau angezeigt werden, wenn idpays = 1, aber hier ist eine Grundlage für das, was Sie gefragt haben - Sie können in der SELECT mit einem Fall, dies zu tun, die eher wie das Problem klingt Sie eher als eine beschrieben haben, wo Klausel:

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

auf OP Kommentare- EDIT basieren muss zugeben, ich bin nicht sicher, verstehe ich die genau Anforderungen des OP an dieser Stelle:

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

Ich habe 10 annonces mit Idpays = 1: 5 idville nul und 5 nicht null, 10 annones mit idpays! = 1, ich brauche die 10 annonces mit idpays! = 1 und die 5 mit idpays 5 und idville nicht null – user1428798

+0

Edited Wie gut ich deine Anforderungen interpretiert habe. Wollen Sie sagen, dass Sie nach Datensätzen mit idpays = 5 suchen? –

3

Sie können für diese Suche

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

ich denke, das stimmt, aber Ihre Antwort wird unter der Annahme, idpays alle positiv sind Zahlen; Wenn das nicht der Fall ist, wäre idpays <> 1 die korrekte Nebenbedingung. –

0

Versuchen Sie, eine CASE-Funktion. Ich glaube nicht, dass Sie die ELSE-Anweisung brauchen überhaupt:

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

Wenn Ihre idpays Spalte NULL Wert enthalten:

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

Wenn Sie für NOT NULL-Werte für idpays = 1 und nur auf der Suche NULL-Werte für idpays <> 1.

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