Ich habe Probleme mit einem T-SQL-Verfahren und hoffe, dass Sie helfen können.T-SQL-Prozedur mit einem booleschen Ergebnis
Ich muss wissen, ob
- Eine Reihe für eine bestimmte ID in einer Tabelle vorhanden ist
- Wenn eine (oder mehrere) existiert dann das späteste hat eine andere ID auf 5 gesetzt
Also die erste Tabelle, die wir brauchen, um die Zeile zu bekommen, hat zwei relevante IDs: Die CaseID und die LocationID, das sind beides ganze Zahlen. Die zweite Tabelle hat 1 relevante ID namens StateID.
Momentan kann ich herausfinden, ob die Zeile in einem Tabellenabschnitt existiert, aber sobald ich versuche etwas zu tun, gibt Enterprise Manager vor der END-Anweisung einen Syntaxfehler aus.
Es gibt wahrscheinlich einen Weg, um zu bekommen, was ich in einem JOIN oder etwas brauche, aber ich bin ein kompletter Neuling hier.
Was wäre die einfachste (zu verstehen) Art der Überprüfung der StateID ist nicht 5 und das Ergebnis als ein wahr/falsch? (Ich weiß, dass SQLServer keinen booleschen Typ hat, sondern stattdessen einen Bit-Typ hat.)
Auch eine Frage des Stils: Den Werten in den IDs ist ein Textfeld zugeordnet - CaseEvents.StateID hat der Text 'Geschlossen' zum Beispiel. Sollte ich Werte als IDs zurückgeben und dann die ID im Code ersetzen oder die Objekte zurückgeben, deren IDs bereits durch den Text ersetzt wurden? Es werden nie mehr als 20 oder 30 Ergebnisse in einem Satz zurückgegeben und die Tabelle wird nie sehr groß sein, da es 5 Jahre dauert, um 2000 Ergebnisse zu erhalten.
HINWEIS: Kann linq (oder irgendetwas anderes .NETty) nicht verwenden, weil dies von einem VB6-Programm aufgerufen wird.
aktualisieren:
Nur 1 Fall kann zu einer Zeit, so dass nur die neuesten Artikel von Relevanz wären offen.
Die möglichen Situationen zu haben ist:
- Kein Fall immer geöffnet. Dies sollte 0 zurückgeben.
- Ein Fall wurde bereits geöffnet, ist aber jetzt geschlossen. Auch dies sollte 0 zurückgeben.
- Ein geöffneter Fall existiert. Dies sollte 1 zurückgeben.
In meinem Fall kann man nur 1 Fall zu einem Zeitpunkt geöffnet haben, um zu prüfen, ob das letzte Element eine Schließung ist, wird in diesem Fall ausreichen. Ich sollte dies in der Problembeschreibung notieren. –
Entschuldigung - ich denke, ich hätte etwas konkreter sein sollen, als ich sagte "Überprüfen, ob der letzte Fall geschlossen ist" - Dies ist nicht unbedingt der neueste, die Reihenfolge wird nicht spezifisch sein, es sei denn, Sie fügen explizit eine ORDER BY-Klausel hinzu. –
Ihr war derjenige, der gerade die Box funktionierte, also bekommen Sie die Zecke, auch wenn es nicht am leichtesten zu verstehen ist. –