Számított mezőre való hivatkozás
2014-07-31T15:29:41+02:00
2014-07-31T16:22:30+02:00
2022-07-19T07:15:43+02:00
Wowbagger78
Sziasztok!

Van az alábbi lekérdezésem:

SELECT CASE WHEN tbl_Szerzodes.BK = 'K' THEN CASE WHEN tbl_Szerzodes.TemaKod = 'A' THEN 1 WHEN tbl_Szerzodes.TemaKod = 'B' OR tbl_Szerzodes.TemaKod = 'F' THEN 2 WHEN tbl_Szerzodes.TemaKod = 'S' THEN 3 WHEN tbl_Szerzodes.TemaKod = 'P' THEN 7 END ELSE CASE WHEN tbl_Szerzodes.TemaKod = 'T' OR tbl_Szerzodes.TemaKod = 'R' OR tbl_Szerzodes.TemaKod = 'V' THEN 4 WHEN tbl_Szerzodes.TemaKod = 'B' THEN 5 WHEN tbl_Szerzodes.TemaKod = 'J' OR tbl_Szerzodes.TemaKod = 'H' THEN 6 END END AS KozzetetelKod, tbl_Szerzodes.Evszam, tbl_Szerzodes.Sorszam, tbl_Szerzodes.KotTargy, vw_TORZS_Partner.TeljesNev, tbl_Szerzodes.TervBrutto, tbl_Szerzodes.KotKelt, CASE WHEN KozzetetelKod > 5 THEN 'Bikkmakk' ELSE 'Makkbikk' END AS KozzetetelNev FROM tbl_Szerzodes LEFT OUTER JOIN vw_TORZS_Partner ON tbl_Szerzodes.PartnerKod = vw_TORZS_Partner.PartnerKod WHERE (tbl_Szerzodes.TervBrutto > 5000000)
A KozzetetelKod egy alias mező, amit számítok. Erre a KozzetetelKod számított mezőre szeretnék hivatkozni kicsit később a KozzetetelNev-ben (CASE WHEN KozzetetelKod > 5...)

Access-ben vígan tudtam lekérdezésen belül hivatkozni egy már előre kiszámított alias névre itt viszont azt írja ki, hogy:
Msg 207, Level 16, State 1, Line 24
Invalid column name 'KozzetetelKod'.

Hogyan tudnám ezt megoldani?

Azon gondolkodtam, hogy kiszervezhetném az egészet egy view-ba és abból már felhasználhatnám egy újabb lekérdezésben a KozzetetelKod mezőt. De egyelőre ezt szeretném elkerülni. Bár, ha minden kötél szakad...

W.
Mutasd a teljes hozzászólást!
Nem vagyok Microsoft SQL Serveres, ezért simán lehet, hogy tévedek, de szerintem nem lehet aliasra hivatkozni így.
A KozzetetelNev-et megpróbálhatnád egy külső selectben előállítani.
Valahogy így gondoltam (a syntax nem biztos, hogy jó):

SELECT Q.*, CASE WHEN Q.KozzetetelKod > 5 THEN 'Bikkmakk' ELSE 'Makkbikk' END AS KozzetetelNev FROM ( SELECT CASE WHEN tbl_Szerzodes.BK = 'K' THEN CASE WHEN tbl_Szerzodes.TemaKod = 'A' THEN 1 WHEN tbl_Szerzodes.TemaKod = 'B' OR tbl_Szerzodes.TemaKod = 'F' THEN 2 WHEN tbl_Szerzodes.TemaKod = 'S' THEN 3 WHEN tbl_Szerzodes.TemaKod = 'P' THEN 7 END ELSE CASE WHEN tbl_Szerzodes.TemaKod = 'T' OR tbl_Szerzodes.TemaKod = 'R' OR tbl_Szerzodes.TemaKod = 'V' THEN 4 WHEN tbl_Szerzodes.TemaKod = 'B' THEN 5 WHEN tbl_Szerzodes.TemaKod = 'J' OR tbl_Szerzodes.TemaKod = 'H' THEN 6 END END AS KozzetetelKod, tbl_Szerzodes.Evszam, tbl_Szerzodes.Sorszam, tbl_Szerzodes.KotTargy, vw_TORZS_Partner.TeljesNev, tbl_Szerzodes.TervBrutto, tbl_Szerzodes.KotKelt FROM tbl_Szerzodes LEFT OUTER JOIN vw_TORZS_Partner ON tbl_Szerzodes.PartnerKod = vw_TORZS_Partner.PartnerKod WHERE (tbl_Szerzodes.TervBrutto > 5000000) ) AS Q
Mutasd a teljes hozzászólást!

abcd