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 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 OpisWymNag.OWNGIDNumer= 2910053
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
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
@JaTobieTyMi: chyba mam STUFF( ( select ';' + dtkonto from ( select distinct 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
#mssql #sql
Generalnie, zależnie od tego co chcesz uzyskać, to albo JOIN, UNION albo sub-SELECT.
@biju: SELECT
(SELECT Kolumna FROM Tabela1 WHERE Warunek1) AS Kolumna1,
(SELECT Kolumna FROM Tabela2 WHERE Warunek2) AS Kolumna2; ?
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
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 OpisWymNag.OWNGIDNumer= 2910053
Zwraca
dt_konto
221
402
490
550
202
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
Komentarz usunięty przez autora
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
Komentarz usunięty przez autora
STUFF(
(
select ';' + dtkonto from (
select distinct 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