bestimmen, wenn alle Werte null sind, wenn true, dann false, sonst true
Ich habe derzeit eine select-Anweisung, die prüft, mehrere Spalten, um zu sehen, wenn Sie über Daten verfügen. wenn einer von Ihnen null sind, dann möchte ich ein bisschen auf false gesetzt. wenn keine von Ihnen null ist, dann möchte ich ein bit auf true gesetzt. hier ist, was ich derzeit habe:
select
cast(
case when ChangeOrderNumber is null then 0 else 1 end *
case when ClientName is null then 0 else 1 end *
case when QuoteNumber is null then 0 else 1 end *
case when ClientNumber is null then 0 else 1 end *
case when ServiceLine is null then 0 else 1 end *
case when ServiceLineCode is null then 0 else 1 end *
case when GroupLeader is null then 0 else 1 end *
case when CreatedBy is null then 0 else 1 end *
case when PTWCompletionDate is null then 0 else 1 end *
case when BudgetedHours is null then 0 else 1 end *
case when BudgetDollars is null then 0 else 1 end *
case when InternalDeadlineDate is null then 0 else 1 end *
case when ProjectDescription is null then 0 else 1 end *
case when Sales is null then 0 else 1 end *
case when Coop is null then 0 else 1 end *
case when PassThrough is null then 0 else 1 end *
case when POStatus is null then 0 else 1 end *
case when PONumber is null then 0 else 1 end as bit
)
as Flag
from t
nun, dass der code funktioniert, aber es ist ein bisschen langwierig, ich wurde gefragt, ob jemand weiß, einen besseren Weg, dies zu tun. bitte beachten Sie, dass mehrere Datentypen geprüft wird.
weitere details:
dieser code ist in einer Ansicht, dass untersucht wird in einer Anwendung für die Verarbeitung der Aufträge ändern. bevor eine ändern der Reihenfolge verarbeitet werden können, müssen einige Daten auf Qualität überprüft. diese Ansicht zeigt, wenn die geforderten Daten ist null.
- Komm David...weißt du nicht, wie Sie dies tun 😛
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie Sie einfach bis da NULL + "etwas" ist immer NULL ...
vom post ich erstellt vor mehr als 3 Jahren ...
Beachten Sie, dass, wenn Sie Zeichen, die nicht zahlen, müssen Sie konvertieren
varchar
...Hier ist die Umwandlung, keine Notwendigkeit, zu konvertieren den varchar-Spalten
keep in mind that if you have characters that are not numbers that you have to convert to varchar
Ich glaube, ich könnte mit dieser Lösung, es sei denn, jemand kommt mit einer besseren, inspiriert von @Alireza:
Nutzen Sie bitte
IIF()
(müssen sql server 2012 oder später), die ich wirklich empfehlen kann:Was über diese?
Könnte man invertieren der Logik.
Erstellen Sie ein HasValue-Funktion in eine sql_variant-Spalte und gibt ein bisschen. Verwenden Sie dann bitweise UND-Verknüpfung in Ihrem
SELECT
- Klausel.Oder so:
Viel einfacher -- benutzen Sie einfach die
COALESCE
Funktion gibt den Wert des ersten nicht-null-Spalte.