Wpis z mikrobloga

@biju Musisz jakiś przykład podać - co jest zwracane i jak ma wyglądać docelowo. Najlepiej z (pseudo)kodem.

Generalnie, zależnie od tego co chcesz uzyskać, to albo JOIN, UNION albo sub-SELECT.
Jak połączyć wyniki, które zwraca podzapytanie w jeden rekord?


@biju: SELECT
(SELECT Kolumna FROM Tabela1 WHERE Warunek1) AS Kolumna1,
(SELECT Kolumna FROM Tabela2 WHERE Warunek2) AS Kolumna2; ?
via Wykop
  • 0
przykład konkretnego podzapytania

select dtkonto FROM CDN.Dekrety Dekrety
INNER JOIN CDN.Zrodla Zrodla ON Dekrety.DT
GIDNumer=Zrodla.ZRODTNumer AND Dekrety.DTGIDLp=Zrodla.ZRODTLp AND Dekrety.DTGIDTyp=Zrodla.ZRODTTyp
INNER JOIN CDN.TraNag TraNag ON Zrodla.ZRO
TRNNumer=TraNag.TrNGIDNumer AND Zrodla.ZROTRNTyp=TraNag.TrNGIDTyp
INNER JOIN CDN.OpisWymNag OpisWymNag ON TraNag.TrN
GIDNumer=OWNGIDNumer AND TraNag.TrNGIDTyp=OWNGIDTyp
INNER JOIN CDN.OpisWymElem OpisWymElem ON TraNag.TrN
GIDNumer=OWEGIDNumer AND TraNag.TrNGIDTyp=OWEGIDTyp
where OpisWymNag.OWN
GIDNumer= 2910053

Zwraca
dt_konto
221
402
490
550
202
via Wykop
  • 0
@JaTobieTyMi: próbowałem, ale zwracała mi błąd

mam sql 2016,

select STRINGAGG(dtkonto, ';') FROM CDN.Dekrety Dekrety
INNER JOIN CDN.Zrodla Zrodla ON Dekrety.DTGIDNumer=Zrodla.ZRODTNumer AND Dekrety.DTGIDLp=Zrodla.ZRODTLp AND Dekrety.DTGIDTyp=Zrodla.ZRODTTyp
INNER JOIN CDN.TraNag TraNag ON Zrodla.ZROTRNNumer=TraNag.TrNGIDNumer AND Zrodla.ZROTRNTyp=TraNag.TrNGIDTyp
INNER JOIN CDN.OpisWymNag OpisWymNag ON TraNag.TrNGIDNumer=OWNGIDNumer AND TraNag.TrNGIDTyp=OWNGIDTyp
INNER JOIN CDN.OpisWymElem OpisWymElem ON TraNag.TrNGIDNumer=OWEGIDNumer AND TraNag.TrNGIDTyp=OWEGIDTyp
where own.own
@biju ta funkcja jest od 2017 roku

Jeśli używasz wersji SQL Server 2016, nie masz dostępu do funkcji STRING_AGG. Jednak możesz użyć alternatywnego podejścia, jakim jest użycie funkcji FOR XML PATH. Oto przykładowy kod, który połączy wartości w jednym polu tekstowym przy użyciu tego podejścia:
SELECT STUFF( (SELECT ';' + dtkonto FROM CDN.Dekrety Dekrety INNER JOIN CDN.Zrodla Zrodla ON Dekrety.DTGIDNumer=Zrodla.ZRODTNumer AND Dekrety.DTGIDLp=Zrodla.ZRODTLp AND Dekrety.DTGIDTyp=Zrodla.ZRODTTyp INNER JOIN CDN.TraNag TraNag ON Zrodla.ZROTRNNumer=TraNag.TrNGIDNumer AND Zrodla.ZROTRNTyp=TraNag.TrNGIDTyp
via Wykop
  • 1
@JaTobieTyMi: chyba mam
STUFF(
(
select ';' + dtkonto from (
select distinct dt
konto FROM CDN.Dekrety Dekrety
INNER JOIN CDN.Zrodla Zrodla ON Dekrety.DTGIDNumer=Zrodla.ZRODTNumer AND Dekrety.DTGIDLp=Zrodla.ZRODTLp AND Dekrety.DTGIDTyp=Zrodla.ZRODTTyp
INNER JOIN CDN.TraNag TraNag ON Zrodla.ZROTRNNumer=TraNag.TrNGIDNumer AND Zrodla.ZROTRNTyp=TraNag.TrNGIDTyp
INNER JOIN CDN.OpisWymNag OpisWymNag ON TraNag.TrNGIDNumer=OWNGIDNumer AND TraNag.TrNGIDTyp=OWNGIDTyp
INNER JOIN CDN.OpisWymElem OpisWymElem ON TraNag.TrNGIDNumer=OWEGIDNumer AND TraNag.TrNGIDTyp=OWEGIDTyp