2017-09-24 5 views
-2

Ich habe eine Tabelle wie:Bericht aus einer Tabelle generieren

+====+========+========+ 
| Id | name | value | 
+====+========+========+ 
| 1 | a |  7 | 
+----+--------+--------+ 
| 2 | c |  7 | 
+----+--------+--------+ 
| 1 | g |  1 | 
+----+--------+--------+ 
| 2 | c |  2 | 
+----+--------+--------+ 
| 4 | g |  5 | 
+----+--------+--------+ 
| 6 | t |  4 | 
+----+--------+--------+ 

Ich brauche zwei (2) Abfragen schreiben zwei Berichte zu generieren, nach diesen zwei Bedingungen:

Bericht Output1 = wenn id und Name gleich (id, name, val) Bericht Output2 = if id same but different name (id, name, val)

Wie diese zwei Abfragen schreiben?

+0

Nun, Ihre Bedingungen sind nicht klar, können Sie bitte mehr erklären. – Sami

+0

Bitte lesen [this] (http://spaghettiba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/) für einige Tipps zur Verbesserung Ihrer Frage. – HABO

Antwort

0

Ihre Bedingungen ist nicht klar, aber mybe das, was Sie wollen:

SELECT * 
FROM @T 
WHERE ID = @YourID AND Name = @YourName 

UNION ALL 

SELECT * 
FROM @T 
WHERE ID = @YourID; 

:

DECLARE @T TABLE (Id INT, Name VARCHAR(25), Value INT); 
DECLARE @YourId INT = 1; 
DECLARE @YourName VARCHAR(25) ='a'; 
/**/ 
INSERT INTO @T VALUES 
(1, 'a', 7), 
(2, 'c', 7), 
(1, 'g', 1), 
(2, 'c', 2), 
(4, 'g', 5), 
(6, 't', 4); 
/*First query*/ 
SELECT * 
FROM @T 
WHERE ID = @YourID AND Name = @YourName; 
/*Second query*/ 
SELECT * 
FROM @T 
WHERE ID = @YourID; 

Wenn Sie das Ergebnis der beiden Abfragen in einem Ergebnis wollen, dann können Sie UNION ALL als verwenden Demo.

0

Nun, ich bin mir nicht sicher, was OP wollte, aber vielleicht war es so etwas?

// records where id and value are the same 
SELECT * FROM @T WHERE ID=Value; 

// other records having the same ids as abobe, but DIFFERENT values 
SELECT * FROM @T WHERE ID IN 
(SELECT ID FROM @T WHERE ID=Value) 
    AND Id!=Value; 

Ergebnisse:

   Id Name Value 
    1 g  1 
    2 c  2 

   Id Name Value 
    1 a  7 
    2 c  7 

Dank @Sami die Geige für die Bereitstellung, die ich in dieser DEMO modifiziert.

+0

Kein Problem :) BT OP hat nicht einmal auf unsere Kommentare antworten. – Sami

Verwandte Themen