Ik probeer een subquery te sorteren maar krijg de melding:
The column or alias ‘subQuery.Account’ in the order by-clause does not exist
Terwijl deze kolom weldegelijk aanwezig is, want in de WHERE-clause werkt deze gewoon.
Ik krijg de fout met deze (vereenvoudigde) query:
select *
from SalesItemPricesBulk@eol
where ID in
( select top 1 ID
from SalesItemPricesBulk@eol subQuery
where subQuery.ItemCode = 'ITD020201'
and ( subQuery.Account = '95d5dbe0-af75-496f-94c1-3af3c4229ed6'
or subQuery.Account IS NOT NULL
)
order
by subQuery.Account desc
)
Het is bewust niet mogelijk om op subQuery.Account te sorteren. Dit veld is buiten de scope van de sub-query niet beschikbaar.
Merk op dat sommige databaseplatformen hier wat lakser in zijn, dus het is mogelijk dat het elders wel kan.
Wat zou de query moeten opleveren anders dan:
select *
from SalesItemPricesBulk@eol
where Item = ( select /*+ low_cost */ id from ExactOnlineREST..Items@eol where code = 'ITD020201' )
and ( Account = to_guid('95d5dbe0-af75-496f-94c1-3af3c4229ed6')
or Account is not null
)
order
by Account desc
limit 1
De volledige foutcode itgensql509: The column or alias 'subQuery.Account' in the order by-clause does not exist
De query in mijn bericht is een vereenvoudigde van wat ik eigenlijk doe. In werkelijkheid wil ik met een subquery de juiste record “joinen”.
Ik wil dus een record joinen waarbij Account gelijk is aan een GUID, wanneer er geen record is waarbij Account gelijk is aan mijn GUID wil ik het record met GUID null
Ik probeer de juiste verkoopprijs en kostprijs bij factuurregels te zoeken.
Maar hierbij moet er dus rekening worden gehouden met dat deze eventueel klantspecifiek is, de begindatum en eventuele einddatum.
Ik heb het nu opgelost door de benodigde data eerste naar MSSQL te halen en daar te combineren d.m.v. een OUTER APPLY.
Fijn dat al gelukt is. Als het goed is, dan kan het boekhoudpakket automatisch de kostprijs en verkoopprijs vastleggen bij het inboeken, maar de gebruikte methode hoeft niet altijd aan te sluiten bij de gewenste berekenwijze.