Strona 1 z 1

concat dla jednostek pomocniczych

: 02 cze 2022, 11:11
autor: yakuzz
Witam, staram się uzyskać w jednym wierszu wyniki listy towarów z jednostka główną w jednej kolumnie i wszystkimi jednostkami pomocniczymi wyświetlonymi po przecinku w następnej kolumnie (ew. każda jednostka pomocnicza w następnej kolumnie). Udało mi się wyświetlić jednostki podstawowe i pomocnicze , ale towary z kilkoma jednostkami pomocniczymi są w osobnych wierszach. Chciałem użyć funkcji concat , ale wywala błędy. Obstawiam złe odwołanie do tabeli obcej. Prośba o pomoc w rozwiązaniu wyświetlania
kod działający wyświetlający rekordy:
select cdn.twrkarty.Twr_Nazwa, cdn.twrkarty.Twr_Jm, cdn.TwrJm.TwJ_JmZ
from cdn.twrkarty left join cdn.TwrJm
on cdn.TwrKarty.Twr_GIDNumer = cdn.TwrJm.TwJ_TwrNumer
order by Twr_Nazwa

zły kod:
select Concat (cdn.TwrJm.TwJ_JmZ',') cdn.twrkarty.Twr_Nazwa, cdn.twrkarty.Twr_Jm, cdn.TwrJm.TwJ_JmZ
from cdn.twrkarty left join cdn.TwrJm
on cdn.TwrKarty.Twr_GIDNumer = cdn.TwrJm.TwJ_TwrNumer
order by Twr_Nazwa

Re: concat dla jednostek pomocniczych

: 03 cze 2022, 06:44
autor: mr_zola
Zapomniałeś o przecinku, a nawet dwóch

Kod: Zaznacz cały

select Concat(cdn.TwrJm.TwJ_JmZ,','), cdn.twrkarty.Twr_Nazwa, cdn.twrkarty.Twr_Jm, cdn.TwrJm.TwJ_JmZ
from cdn.twrkarty left join cdn.TwrJm
on cdn.TwrKarty.Twr_GIDNumer = cdn.TwrJm.TwJ_TwrNumer
order by Twr_Nazwa

Re: concat dla jednostek pomocniczych

: 03 cze 2022, 10:03
autor: yakuzz
Ograniczyłem wyświetlanie do jednej kolumny i przecinek wstawia, dzięki za pomoc. Niestety podstawia mi tylko jedna jednostkę pomocniczą. Mamy towary z wieloma jednostkami pomocniczymi. W SQL management studio wyświetla kilka powtarzających się rekordów z różnymi jednostkami ,ale w cdn nie powtarza rekordów. Macie może jakiś pomysł jak dorzucić jednostki pomocnicze do kolejnej kolumny lub wstawić po przecinku?

select Concat (cdn.TwrJm.TwJ_JmZ,',') as jednostki_pomocnicze
from cdn.twrkarty left join cdn.TwrJm
on cdn.TwrKarty.Twr_GIDNumer = cdn.TwrJm.TwJ_TwrNumer
where {filtrsql}

Re: concat dla jednostek pomocniczych

: 03 cze 2022, 10:30
autor: praiser
spróbuj tak:

Kod: Zaznacz cały

select (
select STRING_AGG(cast(cdn.TwrJm.TwJ_JmZ as varchar(max)), ',') from CDN.TwrKarty
left join cdn.TwrJm
on cdn.TwrKarty.Twr_GIDNumer = cdn.TwrJm.TwJ_TwrNumer
where {filtrsql}
FOR XML PATH ('')
) as [Jednostka pomocnicza]

Re: concat dla jednostek pomocniczych

: 07 cze 2022, 15:09
autor: yakuzz
dzięki za odpowiedź, niestety nie mam jak sprawdzić string_agg na naszej wersji sql.

Re: concat dla jednostek pomocniczych

: 07 cze 2022, 16:46
autor: praiser
Można z replace uzyskać podobny efekt dla wersji SQL starszych

Kod: Zaznacz cały

select
	replace(
		replace(
			(
				select
					CAST(twrJm.Twj_Jmz AS nvarchar(max))
				from
					CDN.TwrKarty
					join cdn.TwrJm on cdn.TwrKarty.Twr_GIDNumer = cdn.TwrJm.TwJ_TwrNumer
				where
					{ filtrsql } FOR XML PATH ('foo')
			),
			'</foo>',
			' | '
		),
		'<foo>',
		''
	) as [Jednostka pomocnicza]

Re: concat dla jednostek pomocniczych

: 10 cze 2022, 08:18
autor: yakuzz
Działa, dziękuje za pomoc.