2016-06-03 11 views
0

Hier ist mein echtes Problemalle Zeilen mit derselben ID subtrahieren?

Wie kann ich alle Zeilen mit der gleichen ID subtrahieren?

hier ist meine Abfrage

SELECT amount - (SELECT amount 
        FROM tblmonth WHERE id2='1' 
        AND type='budget') 
FROM tblmonth 
WHERE id2='1' 
and type='actual' 

das Problem in dieser Abfrage subtact ist, kann es nur durch die Verwendung der ID2 = ‚1‘ einer nach dem anderen subtrahieren.

siehe Bild unten als Referenz. danke

enter image description here

+0

Welches Ergebnis möchten Sie? – Blorgbeard

+0

Der Fehler, den Sie bekommen, ist, wie es heißt, weil Sie mehr als eine "Menge" für mindestens eine dieser Unterabfragen haben ... Vielleicht möchten Sie den Betrag oder etwas in den Unterabfragen SUMMEN? – ZLK

Antwort

1

Scheint Ihre ID ein PK ist, so verwenden Top-1 sicher, dass die Abfrage Rückkehr nur ein Datensatz zu machen. Wenn es mehr als eine zurückkehren soll, können Sie SUM() Funktion verwenden

SELECT TOP 1 (SELECT TOP 1 amount FROM tblmonth where type = 'budget' and id='1') 
      - (SELECT TOP 1 amount FROM tblmonth where type = 'actual' and id='1') 
as Result 
from tblmonth 

Select Top 1 als Ergebnis nur einen Datensatz ist zurückkehren, muss die Anzahl der Tabellen tblmonth Aufzeichnung jenes Ergebnis zurückzukehren .

+1

danke dafür, ich habe eine falsche ID-Spalte passend, aber hier ist die meine Abfrage jetzt und es funktioniert. 'SELECT Betrag - (SELECT Betrag FROM tblmonth WHERE id2 = '1' UND Typ = 'Budget') FROM tblmonth WHERE id2 = '1' und type = 'actual'' –

2

Ich glaube nicht, dass es einen Grund gibt, Unterabfragen zu verwenden. Die Logik könnte am besten wie folgt ausgedrückt werden:

+0

danke dafür, krank versuchen, dies zu verwenden. Ich werde dich so schnell wie möglich auf dem Laufenden halten. –

Verwandte Themen