Przepisanie danych unikatowych z kolumn z grupowaniem wg. partii do jednego pola.

0

Poproszę o pomoc,
Mam Select z danymi jak na przykładzie poniżej.
Nie ma stałej ilości unikatowych rekordów.
Partia Nazwa Data
12 Produkt A 01.06.2022
12 Produkt A 01.06.2022
123 Produkt B 01.06.2022
123 Produkt B 02.06.2022
123 Produkt B 03.01.1900
123 Produkt B 03.01.1900
126 Produkt C 01.06.2022
126 Produkt C 04.06.2022
126 Produkt C 04.06.2022
456 Produkt D 04.06.2022
screenshot-20220621180959.png

Partia - Numer partii produktu.
Nazwa - Nazwa w systemie
Data - Data jaką posiada dana partia
Duplikaty wynikają z faktu że dane spływają do Bazy z kilku źródeł.

Chciałbym z układu "kolumnowego" uzyskać układ przepisania Unikalnych dat dla partii do "pola" po przecinku.
Partia Data (Unikatowa dla partii)
12 01.06.2022
123 01.06.2022, 02.06.2022, 03.06.2022
126 01.06.2022, 04.06.2022
456 04.06.2022
screenshot-20220621181021.png
Nie mam zupełnie koncepcji jak do tego podejść.

0

Nie szukasz słowa "pivot" ?

A co do magazynu, partia która posiada wiele dat??? To "trochę'" dziwne, to wysadza słwoa partia w powietrze

0
ZrobieDobrze napisał(a):

Nie szukasz słowa "pivot" ?

A co do magazynu, partia która posiada wiele dat??? To "trochę'" dziwne, to wysadza słwoa partia w powietrze

Pivot - nie do tego.
Ponieważ otrzymasz wiele kolumn z jedną datą w każdej, a mi zależy (jeżeli jest możliwe) o jedna kolumna i wiele wpisów w niej.
Pivot - Wiele kolumn każda ma jedną daty.
Szukam - Jedna kolumna w niej wiele dat.

0

To jeszcze napisz, jaki silnik

0
Fac napisał(a):

To jeszcze napisz, jaki silnik

SQL Express 2019.

2

Zatem interesuje Cię funkcja agregująca STRING_AGG

0

Funkcja wręcz "Boska" niestety serwer 2012 (Jedna baza na tej wersji) bo nowsze wersje SQL nie współpracują z wagami.
Przetestowałem na innym serwerze z 2019 działa idealnie.

screenshot-20220623230310.png

0

Została dodana w wersji 2017. We wcześniejszych trzeba sobie radzić przy pomocy FOR XML PATH.
https://stackoverflow.com/questions/31211506/how-stuff-and-for-xml-path-work-in-sql-server

Założyłem, że daty trzymasz w formacie DATE/DATETIME.

SELECT DISTINCT partia
  ,daty = STUFF(
    (
      SELECT DISTINCT ', ' + CONVERT(NVARCHAR,data,105) 
      FROM dbo.dane d1 
      WHERE d1.partia=d.partia
      FOR XML PATH('')
    )
    ,1,2,''
  )
FROM dbo.dane d

1 użytkowników online, w tym zalogowanych: 0, gości: 1