Problem z aliasem w zapytaniu

0

Witam! Mam problem z poniższym zapytaniem. Podzapytaniem zwracam idKontrahenta (z trzech tabel) i używam aliasu "idKontrahenta". Chciałbym teraz wyświetlić skrótKH z tabeli Kontrahenci ale wyskakuje błąd w ostatniej linijce (podkreśla mi idKontrahenta). Czy ktoś może mnie oświecić jaki robię błąd? Dlaczego nie działa ten alias?

SELECT idTowaru, skrót, nazwaTW,
COALESCE((SELECT SUM(ilośćWolnej) AS Expr1 FROM PozycjeDostawy AS p
WHERE (idTowaru = t.idTowaru)), 0) AS stanMG,
COALESCE((select cena from PozycjeDostawy
where idPozycji = (select MAX(idPozycji) from PozycjeDostawy where
idTowaru = t.idTowaru)),0 ) as ostCena,

(COALESCE(( select kontrahent from DokumentyZakupu where idDokumentu = (select idDokumentu from PozycjeDostawy where
idPozycji = (select MAX(idPozycji) from PozycjeDostawy where
idTowaru = t.idTowaru))),0)+
COALESCE(( select kontrahent from DokumentyWNT where idDokumentu = (select idDokumentu from PozycjeDostawy where
idPozycji = (select MAX(idPozycji) from PozycjeDostawy where
idTowaru = t.idTowaru))),0)+
COALESCE(( select kontrahent from DokumentyFWAL where idDokumentu = (select idDokumentu from PozycjeDostawy where
idPozycji = (select MAX(idPozycji) from PozycjeDostawy where
idTowaru = t.idTowaru))),0)) ** AS idKontrahenta, skrótKH**

FROM Towary AS t inner join Kontrahenci ON
idKontrahenta = Kontrahenci.idKh

0
Mario_Tychy80 napisał(a):

FROM Towary t inner join Kontrahenci ON

spróbuj bez 'AS'

0

W momencie łączenia tabel przez JOIN idKontrahenta JESZCZE nie jest znane - obliczasz je dopiero w SELECT.

0

tak na szybko

SELECT 
*
FROM
(
SELECT        idTowaru, skrót, nazwaTW, 
COALESCE((SELECT SUM(ilośćWolnej) AS Expr1 FROM PozycjeDostawy AS p
WHERE        (idTowaru = t.idTowaru)), 0) AS stanMG,
COALESCE((select cena from PozycjeDostawy
where idPozycji = (select MAX(idPozycji) from PozycjeDostawy where
 idTowaru = t.idTowaru)),0 ) as ostCena, 

(COALESCE(( select kontrahent from DokumentyZakupu where idDokumentu = (select idDokumentu from PozycjeDostawy where
 idPozycji = (select MAX(idPozycji) from PozycjeDostawy where
 idTowaru = t.idTowaru))),0)+
 COALESCE(( select kontrahent from DokumentyWNT where idDokumentu = (select idDokumentu from PozycjeDostawy where
 idPozycji = (select MAX(idPozycji) from PozycjeDostawy where
 idTowaru = t.idTowaru))),0)+
 COALESCE(( select kontrahent from DokumentyFWAL where idDokumentu = (select idDokumentu from PozycjeDostawy where
 idPozycji = (select MAX(idPozycji) from PozycjeDostawy where
 idTowaru = t.idTowaru))),0)) AS idKontrahenta, skrótKH

FROM Towary AS t) X inner join Kontrahenci ON
X.idKontrahenta = Kontrahenci.idKh

PS cos zakrecone to zapytanie.
PS2. Przerob to na
CROSS APPLY i funkcje inline valued function jesli masz SQL Server od 2008 w gore.

0

Dzięki za pomoc! Crowa po małym liftingu Twoje zapytanie zwraca to co potrzebuję. Dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1