Jak posegregować tabelkę w MSSQL aby wyglądała tak jak to przedstawiłem na obrazku?
Zauważcie że w tabeli grupa najpierw jest rozmiar, kolor a potem kolor rozmiar
wersja?
Robisz selekta w ktorym grupujesz po opcji. Dla kolumny grupa i wartość stosujesz funkcje https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-ver15
Tomek Zrobiłem tak jak napisałeś i teraz mam rozkmine ponieważ nie wiem dlaczego wyświetla mi dwie różne dane i nie wiem dlaczego tak jest pierwszy raz się z tym spotykam. W tabeli mam ponad 100 tysięcy rekordów. I dlaczego tak jest że przy mniejszej ilości wyświetla co iinego a przy większej co innego i jak to naprawić
Bez zapytania którego użyłeś, @Tomek Pycia będzie musiał użyć szklanej kuli...
@Tomek Pycia: jest bystry ... myślę, że jak użyje tylko szkła - takiego 18 letniego .. no minimum 12-latka ;) to odpowie OP i kto wie może trafi nawet :P
Edit: A żeby nie było spamu to takie wiejskie rozwiązanie też chyba zadziała ... ale pewnie nie będzie najoptymalniejsze ;) Także dłub przy opcji Tomka
SELECT t1.Id_product, t1.Opcja,
CONCAT(t1.Grupa, ',', t2.Grupa) grupa,
CONCAT(t1.wartosc, ',', t2.wartosc) wartosc
FROM Tabela t1
LEFT JOIN Tabela t2
ON t1.Id_product = t2.Id_product
AND t1.Opcja = t2.Opcja
AND t2.Grupa = 'Kolor'
WHERE t1.Grupa = 'Rozmiar'
Edit2: http://sqlfiddle.com/#!18/af199b/1 <--- Edit3: Link podmieniony na dobrą wersję Serwera
Ps. Oczywiście nie zadziała jak nie ma rozmiaru i inne takie tam kombinacje ;)
@BlackBad czemu wersja fiddle na Postgres? A nawet gdyby to też posiada string_agg
Co do MSSql to mozna tak:
SELECT Id, Opcja,
string_agg(Grupa,',') WITHIN GROUP (ORDER BY grupa) grupa,
string_agg(wartosc,',') WITHIN GROUP (ORDER BY grupa) wartosc
FROM testa t1
group by id, opcja
Czy zadziała to nie wiem bo autor zignorował pytanie o wersje...
Dzięki za Wasze podpowiedzi o to mi właśnie chodziło działa jak należy. Sptawdziłem rozwiązanie BlackBad, teraz będe sprawdzał rozwiązanie Panczo. Mam wersje MSSQL 2019
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.