2016-07-28 28 views
0

Ich brauche Hilfe, um einen 'Kommentar' in einer zusätzlichen Spalte zusammen mit einer SELECT-Anweisung mit einer WHERE-Klausel hinzuzufügen.Wählen Sie eine Anweisung mit einer where-Klausel aus und fügen Sie 'comment' in einer anderen Spalte hinzu

CURRENT CODE

erstes Statement

SELECT * FROM [Table] WHERE [Dep]  = 'M'  AND 
          ([Join M] <> [Join B] OR 
          [Resign M] <> [Resign Date Beneficiary]) 
GO 

Zweite Stellungnahme

SELECT * FROM [Table] WHERE [Join B] < [Resign B] AND 
          ([Join M] > [Join B] OR 
          [Resign M] < [Resign B]) 
GO 

Dies ist zwei verschiedene SELECT-Anweisungen, aber ich würde beiden Ausgänge kombinieren, wie in ein Tisch.

WRONG CODE - (Beispiel zu erklären)

erstes Statement

SELECT * FROM [Table] WHERE [Dep]  = 'M'  AND 
          ([Join M] <> [Join B] OR 
          [Resign M] <> [Resign Date Beneficiary]) 
SET AS [Comment] = 'Main' 
GO 

Zweite Stellungnahme

SELECT * FROM [Table] WHERE [Join B] < [Resign B] AND 
          ([Join M] > [Join B] OR 
          [Resign M] < [Resign B]) 
SET AS [Comment] = 'Date' 
GO 

Die Anforderung ist eine zusätzliche Spalte auf dem hinzufügen Ausgabe und fügen Sie einen "Kommentar" hinzu im Feld, auch um beide Ausgänge in einer Tabelle zu kombinieren.

OUTPUT

Erste Ausgabe der Anweisung

[Number] |[Dep] |[Join M] |[Join B] |[Resign M ]|[Resign B] 
10003 |M  |20160101 |20160201 |20160301 |20160301 
10004 |M  |20160101 |20160201 |20160301 |20160401 

Zweite Ausgabe der Anweisung

[Number] |[Dep] |[Join M] |[Join B] |[Resign M ]|[Resign B] 
10000 |M  |20160201 |20160201 |20160131 |20160430 
10002 |M  |20160501 |20160430 |20160430 |20160430 

erforderliche Ausgangs

[Number] |[Dep] |[Join M] |[Join B] |[Resign M ]|[Resign B]|[Comment] 
10000 |M  |20160201 |20160201 |20160131 |20160430 |'Date' 
10002 |M  |20160501 |20160430 |20160430 |20160430 |'Date' 
10003 |M  |20160101 |20160201 |20160301 |20160301 |'Main' 
10003 |M  |20160101 |20160201 |20160301 |20160401 |'Main' 
+0

Sie beide Antworten danken, sie beide sind die gleichen und die genaue Ausgabe-I erfordern. Vielen Dank. –

Antwort

2

Verwenden UNION ALL auf mehrere (kompatibel) Ergebnismengen zu kombinieren, und Sie können in der SELECT Klausel

SELECT [Number],[Dep],[Join M],[Join B],[Resign M ],[Resign B],'Main' as Comment 
FROM [Table] WHERE [Dep]  = 'M'  AND 
          ([Join M] <> [Join B] OR 
          [Resign M] <> [Resign Date Beneficiary]) 
UNION ALL 

SELECT [Number],[Dep],[Join M],[Join B],[Resign M ],[Resign B],'Date' as Comment 
FROM [Table] WHERE [Join B] < [Resign B] AND 
          ([Join M] > [Join B] OR 
          [Resign M] < [Resign B]) 

Alternativ zusätzliche Ausdrücke hinzuzufügen, wenn diese Zeilen den gesamten Inhalt des Table darstellen und Sie nur wollen zu klassifizieren Reihen entweder als Main oder Date, könnten Sie einen CASE Ausdruck verwenden:

SELECT [Number],[Dep],[Join M],[Join B],[Resign M ],[Resign B], 
    CASE WHEN [Dep]  = 'M'  AND 
      ([Join M] <> [Join B] OR 
      [Resign M] <> [Resign Date Beneficiary]) 
    THEN 'Main' 
    ELSE 'Date' END as Comment 
FROM [Table] 
1

scheint, Sie wollen einfach nur eine Vereinigung aller zwischen den Abfragen

SELECT 
     [Number] 
    , [Dep] 
    , [Join M] 
    , [Join B] 
    , [Resign M ] 
    , [Resign B] 
    , 'Main' AS comment 
FROM [Table] 
WHERE [Dep] = 'M' 
     AND ([Join M] <> [Join B] 
     OR [Resign M] <> [Resign Date Beneficiary] 
    ) 

UNION ALL 

     SELECT 
      [Number] 
      , [Dep] 
      , [Join M] 
      , [Join B] 
      , [Resign M ] 
      , [Resign B] 
      , 'Date' AS comment 
     FROM [Table] 
     WHERE [Join B] < [Resign B] 
      AND ([Join M] > [Join B] 
       OR [Resign M] < [Resign B] 
       ) 
;