2017-07-26 1 views
2

Lasst uns sagen, dass ich dieses:Benötigen Sie ein SQL-Skript zu erstellen, dieses Ergebnis zu erhalten

+-----+------+ 
| ID | Var | 
+-----+------+ 
| 100 | 2 | 
| 100 | 4 | 
| 100 | NULL | 
+-----+------+ 
| 425 | 1 | 
| 425 | 2 | 
| 425 | 3 | 
| 425 | 7 | 
+-----+------+ 
| 467 | NULL | 
| 467 | NULL | 
+-----+------+ 
| 500 | 3 | 
| 500 | NULL | 
| 500 | NULL | 
+-----+------+ 

Wenn auch nur eine dieser IDs einen NULL-Var zugeordnet hat, muss ich alle IDs dieses Wertes entfernen die Skriptausgabe. Also würde ich damit enden.

Allerdings möchte ich nur eine dieser Variablen (die größte). Oh, und diese Variablen sind Daten, obwohl ich sie hier in einfache Zahlen gesetzt habe, um sie leichter zu lesen. Sie würden in diesem Format sein:

YYYY-MM-DD HH: MM: SS

Am Ende ... Ich möchte eine Ausgabe wie folgt aus:

+-----+------+ 
| ID | Var | 
+-----+------+ 
| 425 | 7 | 
+-----+------+ 

I Stellen Sie sich vor, ich würde wahrscheinlich eine CASE-Anweisung benötigen, um dies zu tun. Auch ich weiß nicht, ob dies hilft, aber es gibt mehrere andere Spalten in meiner Ausgabe, aber ich muss nur testen, um zu sehen, ob diese Variable einen NULL-Wert hat.

(Die DateDroppedOff ist Var)

Meine aktuelle Skript (Ein wenig vereinfacht nur relevante Informationen haben):

SELECT TOP 100000 [t1].[ID] 
     ,[t1].[DateCreated] 
     ,[t3].[DateDroppedOff]  
     ,[t3].[HasBeenDroppedOff] 
     ,[t3].[ManifestItemID] 
     ,[t3].[ManifestID] 
FROM [t1] 
LEFT JOIN t2 ON t1.ID = t2.ID 
LEFT JOIN t3 ON t2.MovementID = t3.MovementsID 
ORDER BY t1.ID 

DANKE !!!

Antwort

3

Im Allgemeinen können Sie es tun wie dies

select id, max(var) 
from your_table 
group by id 
having sum(case when var is null then 1 else 0 end) = 0 
+0

Vielen Dank. Es hat super geklappt. –

0

Einen anderen Weg, dies zu tun:

SELECT ID, MAX(VAR) as VAR 
FROM table A 
WHERE NOT EXISTS (SELECT 1 FROM table B WHERE A.ID = B.ID and B.VAR IS NULL) 
GROUP BY ID 
Verwandte Themen