[SQL] Kolumna grup na karcie towarowej
Moderator: mikey
[SQL] Kolumna grup na karcie towarowej
Cześć,
Potrzebuję dodać kolumnę grup na zakładce Wszystkie wg kodu karty towarowej.
Chciałbym aby pokazywało mi wszystkie grupy do których jest przypisany towar/produkt. Grupy tego towaru/produktu, mogą być wtedy wypisane ciągiem w jednej linii (komórce).
Czy wtedy można zaznaczyć która grupa jest tą domyślną ?
Dziękuję za wszelką pomoc.
Potrzebuję dodać kolumnę grup na zakładce Wszystkie wg kodu karty towarowej.
Chciałbym aby pokazywało mi wszystkie grupy do których jest przypisany towar/produkt. Grupy tego towaru/produktu, mogą być wtedy wypisane ciągiem w jednej linii (komórce).
Czy wtedy można zaznaczyć która grupa jest tą domyślną ?
Dziękuję za wszelką pomoc.
Re: [SQL] Kolumna grup na karcie towarowej
Teoretycznie tak chociaż kolumna może mieć limit znaków (jeżeli jest dużo podgrup)
Grupa domyślna jest w CDN.TwrGrupyDom (join on Twr_GIDNumer=Tgd_GIDNumer and Twr_GIDTyp=Tgd_GIDTyp)
Kod: Zaznacz cały
select (
select STRING_AGG(ISNULL(CAST(cdn.TwrGrupaPelnaNazwa(twg_GrONumer) AS nvarchar(max)),' '), ' | ') from CDN.TwrKarty
JOIN CDN.TwrGrupy ON Twr_GIDTyp=TwG_GIDTyp AND Twr_GIDNumer=TwG_GIDNumer and TwG_GIDTyp=16
where {filtrsql}
FOR XML PATH ('')
) as Grupy
--------------------------------
Pozdrawiam
WW
Pozdrawiam
WW
Re: [SQL] Kolumna grup na karcie towarowej
Niestety pojawia się błąd po zapisaniu dyskietką. Nie wiem co dalej mam z tym zrobić.praiser pisze: ↑27 kwie 2022, 10:55Teoretycznie tak chociaż kolumna może mieć limit znaków (jeżeli jest dużo podgrup)
Grupa domyślna jest w CDN.TwrGrupyDom (join on Twr_GIDNumer=Tgd_GIDNumer and Twr_GIDTyp=Tgd_GIDTyp)Kod: Zaznacz cały
select ( select STRING_AGG(ISNULL(CAST(cdn.TwrGrupaPelnaNazwa(twg_GrONumer) AS nvarchar(max)),' '), ' | ') from CDN.TwrKarty JOIN CDN.TwrGrupy ON Twr_GIDTyp=TwG_GIDTyp AND Twr_GIDNumer=TwG_GIDNumer and TwG_GIDTyp=16 where {filtrsql} FOR XML PATH ('') ) as Grupy
- Załączniki
-
- 2022-04-28 at 13-22-14.png (22.02 KiB) Przejrzano 1952 razy
Re: [SQL] Kolumna grup na karcie towarowej
STRING_AGG (Transact-SQL)
Applies to: yesSQL Server 2017 (14.x) and later YesAzure SQL Database YesAzure SQL Managed Instance yesAzure
U mnie nie pokazuje błędu.
Applies to: yesSQL Server 2017 (14.x) and later YesAzure SQL Database YesAzure SQL Managed Instance yesAzure
U mnie nie pokazuje błędu.
--------------------------------
Pozdrawiam
WW
Pozdrawiam
WW
Re: [SQL] Kolumna grup na karcie towarowej
Można by tak na około popróbować z replace
Kod: Zaznacz cały
select replace(replace(
(select
(CAST(cdn.TwrGrupaPelnaNazwa(twg_GrONumer) AS nvarchar(max))) from CDN.TwrKarty
JOIN CDN.TwrGrupy ON Twr_GIDTyp=TwG_GIDTyp AND Twr_GIDNumer=TwG_GIDNumer and TwG_GIDTyp=16
where {filtrsql}
FOR XML PATH ('I')
)
,'</I>',' | ') , '<I>','')
as Grupa
--------------------------------
Pozdrawiam
WW
Pozdrawiam
WW
Re: [SQL] Kolumna grup na karcie towarowej
U mnie z funkcją Replace działa . Wielkie Dzięki!praiser pisze: ↑28 kwie 2022, 14:11Można by tak na około popróbować z replace
Kod: Zaznacz cały
select replace(replace( (select (CAST(cdn.TwrGrupaPelnaNazwa(twg_GrONumer) AS nvarchar(max))) from CDN.TwrKarty JOIN CDN.TwrGrupy ON Twr_GIDTyp=TwG_GIDTyp AND Twr_GIDNumer=TwG_GIDNumer and TwG_GIDTyp=16 where {filtrsql} FOR XML PATH ('I') ) ,'</I>',' | ') , '<I>','') as Grupa
A czy da się jeszcze wyróżnić grupę domyślną. Kolor czcionki, pogrubienie, znacznik, ..?
Re: [SQL] Kolumna grup na karcie towarowej
Takie formatowanie w obrębie jednego ciągu znaków to nie wiem czy się da ale można oznaczyć domyślną grupę, np. gwiazdką czy coś.
Kod: Zaznacz cały
select replace(replace(
(select
(case WHEN Twg_GroNumer=Tgd_Gronumer THEN '*'+CAST(cdn.TwrGrupaPelnaNazwa(twg_GrONumer) AS nvarchar(max))+'*' else CAST(cdn.TwrGrupaPelnaNazwa(twg_GrONumer) AS nvarchar(max)) end)
from CDN.TwrKarty
JOIN CDN.TwrGrupy ON Twr_GIDTyp=TwG_GIDTyp AND Twr_GIDNumer=TwG_GIDNumer and TwG_GIDTyp=16
JOIN CDN.TwrGrupyDom ON Twr_GIDTyp=Tgd_GIDTyp AND Twr_GIDNumer=Tgd_GIDNumer and TGd_GIDTyp=16
where {filtrsql}
FOR XML PATH ('I')
)
,'</I>',' | ') , '<I>','')
as Grupa
--------------------------------
Pozdrawiam
WW
Pozdrawiam
WW
Re: [SQL] Kolumna grup na karcie towarowej
Jeszcze poprawka gdy indeks nie ma grupy
Kod: Zaznacz cały
select replace(replace(
(select
(case WHEN Twg_GroNumer=Tgd_Gronumer THEN '*'+CAST(cdn.TwrGrupaPelnaNazwa(twg_GrONumer) AS nvarchar(max))+'*' ELSE CAST(cdn.TwrGrupaPelnaNazwa(twg_GrONumer) AS nvarchar(max)) end)
from CDN.TwrKarty
JOIN CDN.TwrGrupy ON Twr_GIDTyp=TwG_GIDTyp AND Twr_GIDNumer=TwG_GIDNumer and TwG_GIDTyp=16 and TwG_GrONumer<>0
JOIN CDN.TwrGrupyDom ON Twr_GIDTyp=Tgd_GIDTyp AND Twr_GIDNumer=Tgd_GIDNumer and TGd_GIDTyp=16 and Tgd_GrONumer<>0
where {filtrsql}
FOR XML PATH ('I' )
)
,'</I>',' | ') , '<I>','')
as Grupa
--------------------------------
Pozdrawiam
WW
Pozdrawiam
WW
Re: [SQL] Kolumna grup na karcie towarowej
Działa. Wystarczy znakiem *praiser pisze: ↑29 kwie 2022, 13:20Takie formatowanie w obrębie jednego ciągu znaków to nie wiem czy się da ale można oznaczyć domyślną grupę, np. gwiazdką czy coś.
Kod: Zaznacz cały
select replace(replace( (select (case WHEN Twg_GroNumer=Tgd_Gronumer THEN '*'+CAST(cdn.TwrGrupaPelnaNazwa(twg_GrONumer) AS nvarchar(max))+'*' else CAST(cdn.TwrGrupaPelnaNazwa(twg_GrONumer) AS nvarchar(max)) end) from CDN.TwrKarty JOIN CDN.TwrGrupy ON Twr_GIDTyp=TwG_GIDTyp AND Twr_GIDNumer=TwG_GIDNumer and TwG_GIDTyp=16 JOIN CDN.TwrGrupyDom ON Twr_GIDTyp=Tgd_GIDTyp AND Twr_GIDNumer=Tgd_GIDNumer and TGd_GIDTyp=16 where {filtrsql} FOR XML PATH ('I') ) ,'</I>',' | ') , '<I>','') as Grupa
Wielkie Dzięki!
Re: [SQL] Kolumna grup na karcie towarowej
Bez grupy chyba nie da się założyć indeksu, ani odłączyć grupę od istniejącego indeksu (jeżeli ma tylko jedną grupę). Musi być zawsze minimum jedna grupa.praiser pisze: ↑29 kwie 2022, 13:46Jeszcze poprawka gdy indeks nie ma grupy
Kod: Zaznacz cały
select replace(replace( (select (case WHEN Twg_GroNumer=Tgd_Gronumer THEN '*'+CAST(cdn.TwrGrupaPelnaNazwa(twg_GrONumer) AS nvarchar(max))+'*' ELSE CAST(cdn.TwrGrupaPelnaNazwa(twg_GrONumer) AS nvarchar(max)) end) from CDN.TwrKarty JOIN CDN.TwrGrupy ON Twr_GIDTyp=TwG_GIDTyp AND Twr_GIDNumer=TwG_GIDNumer and TwG_GIDTyp=16 and TwG_GrONumer<>0 JOIN CDN.TwrGrupyDom ON Twr_GIDTyp=Tgd_GIDTyp AND Twr_GIDNumer=Tgd_GIDNumer and TGd_GIDTyp=16 and Tgd_GrONumer<>0 where {filtrsql} FOR XML PATH ('I' ) ) ,'</I>',' | ') , '<I>','') as Grupa
Czy się mylę?