Jak wyświetlić te dane w MSSQL

0

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

screenshot-20200723123241.png

0

wersja?

2

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

0

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ć

2

Bez zapytania którego użyłeś, @Tomek Pycia będzie musiał użyć szklanej kuli...

4

@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 ;)

2

@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...

0

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

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