Fügen Sie Spalten dynamisch, abhängig von einer Bedingung in SQL
Ich bin mit SSMS 2012. Betrachten Sie eine Tabelle Ein mit den Spalten A, B, C. ich möchte Sie dynamisch hinzufügen eine neue Spalte D dieser Tabelle basierend auf einer Bedingung, in einer der vorhandenen Spalten. Wie kann das erreicht werden?
Abfrage die wie folgt aussieht,
select col1, col2 from #temptbl
Zu diesem #temptbl, ich würde gerne eine Spalte hinzufügen, col3 und der Wert in col3 wird basierend auf einer Bedingung auf col2.
- Haben Sie versucht, alles, was mit den gespeicherten Prozeduren. wenn die Anzahl der coulmns sind die gleichen für jede Tabelle, die dieses getan werden kann
- Meinst du das hinzufügen einer Spalte nur für Datensätze, die die Bedingung? In diesem Fall ist es nicht möglich. Sie würden haben, um die Spalte für die gesamte Tabelle. Es wäre besser, um die Spalte hinzuzufügen und trotzdem setzen Sie den Wert für die Spalte auf der Grundlage der Bedingung (berechnetes Feld vielleicht)
- Ja, das ist es, was ich meinte. Eine Spalte hinzufügen und Werte zurück, die in dieser Spalte basieren auf der Bedingung. Wie kann das getan werden?
- Ändern Sie die Tabelle und fügen Sie die Spalte. Führen Sie dann eine update-Anweisung mit einem case-Ausdruck. Es sei denn, Sie geben uns ein paar details über deine Tabelle und die Logik, die am besten ist, jeder kann bieten.
- Ich geändert habe meine Frage mit einem Beispiel-query. Bitte könnten Sie mir helfen, zu das jetzt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um eine Spalte hinzuzufügen, müssen Sie
ALTER
die TabelleLassen Sie sagen, Sie möchten, fügen Sie eine ganze Zahl für
COL3
Durch und aktualisiert den Wert in col3 aufgrund einer Bedingung auf col2, die Sie tun müssen, ein
UPDATE
und verwenden Sie eineCASE
- Anweisung, die Bedingung zu überprüfen :Lassen Sie sagen, Sie möchten, legen Sie den Wert 3 in
COL3
wennCOL2
gleich 2Wie Tom bereits erwähnt, können Sie nur eine Spalte für die gesamte Tabelle, nicht auf eine bedingte Grundlage. Sie können es machen, eine berechnete Spalte oder, wenn Sie eine Abfrage der Tabelle, haben eine
CASE
- Anweisung, wenn das hinzufügen einer Spalte ist nicht möglich.Nach deinem edit es ist immer noch unglaublich vage, was Sie wollen, zu tun, aber vielleicht ist das in der Nähe??? Keine Ahnung, was den Zustand oder die Ausgabe sollte aber, wenn die Bedingung nicht erfüllt ist die Ausgabe dieser wird NULL sein.