Pętla for each w zapytaniu SQL

0

Cześć, mam taki problem mam tabelę z której selectem chcę wyciągnąć dane. Zgodnie z rysunkiem.
tabela.jpg

Czyli teoretycznie dla każdego Zlec_ID musiałbym zrobić for each. Da radę to w zapytaniu SQL osiągnąć?

2

Da się :)

1

Tak da rade

4

Poszukaj o pivocie - teraz chyba większość baz to wspiera.

0

@woolfik: Super wiedzieć że się da :) a jakim sposobem? można prosić o poradę?

4

Pewnie, że można jak podasz więcej szczegółów. Zapytałeś o poradę w dziale bazy danych ale nie podałeś co to za baza, a poszczególne bazy różnią się od siebie. Z grafiki, która załączyłeś wnioskuję, że to jakiś excel (ewentualnie Access) więc nie umiem odpowiedzieć po SQL'owemu :)

Robiąc zapytanie w tym dziale dobrze jest przygotować strukturę na :
sqlfiddle.com lub https://www.db-fiddle.com/

tam dajesz jakieś przykładowe zapytanie i na nim możemy Ci nawet przygotować gotowca. Natomiast nie podając struktury i tylko screena ciężko podać gotowca. Wcześniej @UglyMan podał Ci nazwę funkcji PIVOT, choć nie znając dystrybucji bazy danych ciężko powiedzieć czy to wystarczy.

5

Chyba PIVOT będzie ciężko, bo tu w zależności od atrybutu bierze się pod uwagę różne kolumny...
To będzie coś w ten deseń:

SELECT Zlec_id, Min(CASE WHEN Atribute_Id=303 THEN value_text END) "303", Min(CASE WHEN Atribute_Id=307 THEN value_date_time END) "307", Min(CASE WHEN Atribute_Id=309 THEN value_text END) "309", Min(CASE WHEN Atribute_Id=310 THEN value_float END) "310"
FROM
tabela
WHERE
Atribute_ID IN (303,307,309,310) /* dla pewności */
GROUP BY Zlec_id
0

To co opisałeś to np. w SQL Server rozwiązuje się Kursorem (for each) -> https://docs.microsoft.com/en-us/sql/t-sql/language-elements/declare-cursor-transact-sql?view=sql-server-ver15

Jednak musisz mieć świadomość że jest to bardzo wolne ;-)

Albo PIVOT tak jak koledzy wyżej napisali.

0

Dzięki @Marcin.Miga za rozwiązanie. Trochę muszę pozamieniać, żeby było zgodne z moimi tabelami i zamierzeniami, ale o to chodziło.
Do tych obrażających mnie.. :) sory za zamieszanie. Musiałem pozamieniać nazwy pól i tabeli, faktycznie może warto było zrobić to profesjonalniej.
Wybaczcie.
@UglyMan PIVOT u mnie niestety nie wystarczył, ale dzięki za podpowiedź. Dzięki Tobie dowiedziałem się o takiej możliwości. Ważne uczyć się nowych rzeczy.
Temat można zamknąć.

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