concat dla jednostek pomocniczych
Moderator: mikey
concat dla jednostek pomocniczych
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
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
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
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}
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
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]
--------------------------------
Pozdrawiam
WW
Pozdrawiam
WW
Re: concat dla jednostek pomocniczych
dzięki za odpowiedź, niestety nie mam jak sprawdzić string_agg na naszej wersji sql.
Re: concat dla jednostek pomocniczych
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]
--------------------------------
Pozdrawiam
WW
Pozdrawiam
WW
Re: concat dla jednostek pomocniczych
Działa, dziękuje za pomoc.