Frage

In unserer Datenbank haben wir ein System einrichten Spur von Anwendungen zu halten. Wir haben eine Bool Spalte ab, die angibt, ob der Antrag genehmigt wird. Dann gibt es noch eine weitere Spalte, ob die Anwendung angibt, wird verweigert. Wenn weder Spalte wahr ist, dann wird die Anwendung in Betracht gezogen werden anhängig ist.

Gibt es eine einfache Möglichkeit, diese in einen Wert (wie sagt eine tinyint oder vielleicht eine Zeichenfolge, die sagt „approved“, „verweigert“ oder „pending“) in einem verbinden? Oder ist dies so etwas wie eine Tabellenwertfunktion erfordern gehen?

UPDATE: Es ist schwierig, eine Antwort wählen zu wählen, da sie alle nützlich waren. Ich werde mit Glatzkopf gehe seit er zum ersten Mal veröffentlicht.

War es hilfreich?

Lösung

könnten Sie eine Case-Anweisung in Ihrer Abfrage verwenden: Wählen Fall genehmigt, wenn 1 dann 'Genehmigt' else ...

Case-Anweisungen können verschachtelt werden, so dass Sie in die verschiedenen Optionen vertiefen können.

Warum eher nicht eine Int-Spalte mit drei unterschiedlichen Werten verwenden, oder Sie können sogar so weit, mit einer Bool-Säule, mit null aktiviert gehen. Wenn null ist anhängig, 1 genehmigt und 0 verweigert.

Andere Tipps

Sie können eine Case-Anweisung wie folgt verwenden:

select case 
  when Approved = 1 then 'Approved'
  when Denied = 1 then 'Denied'
  else 'Pending'
  end 'Status'

Da Sie speichert sowohl ein Genehmigtes und ein Denied Wert, müssen Sie sich Sorgen über die Bestellung (was Vorrang hat, wenn beide wahr sind?). Sie sollten auf jeden Fall diese nur in Aussicht gestellt, so dass Sie später diese Logik nicht wiederholen.

von NTFS-Berechtigungen Nach ziehe ich immer Verweigern Vorrang haben:

CASE 
    --Denied has precedence
    WHEN Denied = 1 THEN 'Denied'
    WHEN Approved = 1 THEN 'Approved'
    ELSE 'Pending'
END as Status

Wenn Sie andere Anforderungen haben, die es ausschließen, ich eher wie Baldy Vorschlag eines Nullable-int oder überprüfen eingeschränkt Tinyint Spalte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top