SQL server 2005 gibt Fehler beim Ausführen einer Abfrage mit einer ausgewählten Abfrage als Verknüpfung zurück

Ich erhalte die Syntax-Fehlermeldung, wenn ich versuche, den unten gezeigten Code auszuführen

Msg 156, Stufe 15, Zustand 1, Zeile 3
Falsche Syntax in der Nähe des Keyword 'join'.
Msg 156, Stufe 15, Zustand 1, Zeile 7
Falsche Syntax in der Nähe des Stichwortes 'bestellen'.

Aber wenn ich die 2. Abfrage ohne die Klammern ausführen () die Ergebnisse sind ok. Wenn ich also die Abfrage in einem neuen Abfragefenster mit den Klammern ausführe, bekomme ich diese Meldung. Eine Abfrage muss in der Lage sein, in Klammern laufen zu können?!? Vielen Dank für das Lesen (und hoffentlich beantworten XD) meine Frage.

Ich habe versucht, Räume für Lesbarkeit hinzuzufügen, ich hoffe es funktioniert.

SELECT faknr, tot_bdr as verkooporderbedrag FROM [001].[dbo].[frhkrg] faktuur WHERE dagbknr = 70 JOIN (SELECT SUM(amutas.bedrag) AS totaalbedrag_regels, amutak.bkstnr, amutas.reknr, amutas.faktuurnr AS faknr FROM [001].[dbo].[amutak] INNER JOIN [amutas] ON amutak.bkstnr = amutas.bkstnr WHERE amutak.dagbknr = 90 AND status NOT IN ('V', 'O') AND amutas.reknr = 1160 GROUP BY amutak.bkstnr, amutak.bkstnr, amutas.reknr, amutas.faktuurnr ORDER BY amutak.bkstnr DESC) memoriaal ON faktuur.faknr = memoriaal.faknr 

Ich habe die Abfrage auf die folgenden geändert:

 SELECT faktuur.faknr, tot_bdr AS verkooporderbedrag, SUM(totaalbedrag_regels) AS Totaalbedrag_verdeling FROM [001].[dbo].[frhkrg] faktuur JOIN (SELECT SUM(amutas.bedrag) AS totaalbedrag_regels,amutak.bkstnr,amutas.reknr,amutas.faktuurnr AS faknr FROM [001].[dbo].[amutak] INNER JOIN [amutas] ON amutak.bkstnr = amutas.bkstnr WHERE amutak.dagbknr = 90 AND status NOT IN ('V', 'O') AND amutas.reknr = 1161 GROUP BY amutak.bkstnr,amutak.bkstnr,amutas.reknr,amutas.faktuurnr) memoriaal ON faktuur.faknr = memoriaal.faknr GROUP BY faktuur.faknr,tot_bdr,totaalbedrag_regels ORDER BY faknr 

Obwohl meine letzte GROUP BY-statement, er immer noch nicht SUM (und GROUP) die Ergebnisse richtig. Mehrere datasätze sind noch getrennt:

 faknr verkooporderbedrag Totaalbedrag_verdeling 14700218 5115 4880,05 14700218 5115 234,95 

Der datatyp von "Totaalbedrag_verdeling" ist eine Nummer (ich kann mathematische Aktionen mit ihm machen) und die beiden anderen Werte sind die gleichen … Jemand hat ein Update?

/ ME STUPID: Eine Spalte, die SUM (oder MAX usw.) sein muss, darf nicht in die GROUP BY-statement aufgenommen werden ….

Die Klausel kommt nach der Klausel:

 SELECT faknr, tot_bdr as verkooporderbedrag FROM [001].[dbo].[frhkrg] faktuur join (SELECT SUM(amutas.bedrag) as totaalbedrag_regels,amutak.bkstnr,amutas.reknr,amutas.faktuurnr as faknr FROM [001].[dbo].[amutak] inner join [amutas] on amutak.bkstnr = amutas.bkstnr WHERE amutak.dagbknr = 90 and status not in ('V', 'O') and amutas.reknr = 1160 GROUP BY amutak.bkstnr,amutak.bkstnr,amutas.reknr,amutas.faktuurnr ) memoriaal on faktuur.faknr = memoriaal.faknr where faktuurdagbknr = 70; 

Auch die order by in der Unterabfrage ist überflüssig.

Verschieben Sie die Klausel nach der JOIN ON-Klausel und verschieben Sie ORDER BY-Klausel außerhalb der Unterabfrage

 SELECT faknr, tot_bdr as verkooporderbedrag FROM [001].[dbo].[frhkrg] faktuur join (SELECT SUM(amutas.bedrag) as totaalbedrag_regels,amutak.bkstnr,amutas.reknr,amutas.faktuurnr as faknr FROM [001].[dbo].[amutak] inner join [amutas] on amutak.bkstnr = amutas.bkstnr WHERE amutak.dagbknr = 90 and status not in ('V', 'O') and amutas.reknr = 1160 GROUP BY amutak.bkstnr,amutak.bkstnr,amutas.reknr,amutas.faktuurnr ) memoriaal on faktuur.faknr = memoriaal.faknr where dagbknr = 70 ORDER BY amutak.bkstnr desc 
  SELECT faknr, tot_bdr as verkooporderbedrag FROM [001].[dbo].[frhkrg] faktuur join (SELECT SUM(amutas.bedrag) as totaalbedrag_regels,amutak.bkstnr,amutas.reknr,amutas.faktuurnr as faknr FROM [001].[dbo].[amutak] inner join [amutas] on amutak.bkstnr = amutas.bkstnr WHERE amutak.dagbknr = 90 and status not in ('V', 'O') and amutas.reknr = 1160 GROUP BY amutak.bkstnr,amutak.bkstnr,amutas.reknr,amutas.faktuurnr ORDER BY amutak.bkstnr desc) memoriaal on faktuur.faknr = memoriaal.faknr where dagbknr = 70