<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - Tabela przestawna??]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=1187</link>
		<description><![CDATA[Najświeższe odpowiedzi w Tabela przestawna??.]]></description>
		<lastBuildDate>Wed, 21 Dec 2011 09:31:19 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: Tabela przestawna??]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=3329#p3329</link>
			<description><![CDATA[Może coś takiego:

[code]Create Table Raport (
    id integer,
    typ_zlecenia text,
    data_wykonania date,
    kierunek_sn integer
);

Insert Into Raport Values (35240, 'SERWIS', '2011-12-13', 6082);
Insert Into Raport Values (35240, 'SERWIS', '2011-12-13', 6083);

Select
    id As "ID",
    typ_zlecenia As "TYP ZLECENIA",
    data_wykonania As "DATA WYKONANIA",
    min(kierunek_sn) As "KIERUNKE S/N",
    Case When min(kierunek_sn) <> max(kierunek_sn) Then max(kierunek_sn) Else Null End As "KIERUNKE S/N"
From Raport
Group by id, typ_zlecenia, data_wykonania;
  ID   | TYP ZLECENIA | DATA WYKONANIA | KIERUNKE S/N | KIERUNKE S/N 
-------+--------------+----------------+--------------+--------------
 35240 | SERWIS       | 2011-12-13     |         6082 |         6083
(1 row)[/code]

Założenia są takie, że zawsze będą dwie kolumny KIERUNKE S/N, jeżeli wartości są identyczne, to w drugiej jest umieszczany Null, grupowanie idzie po trzech pierwszych kolumnach. Jeżeli kolumn ma być więcej tj. poniższe zapytanie zwraca wartość > 2:

[code]Select max(count) From (Select count(kierunek_sn) from Raport Group by id, typ_zlecenia, data_wykonania) s;[/code]

to sytucja się znacząco komplikuje, myślę, że możnaby kombinować z użyciem modułu tablefunc ([url]http://www.postgresql.org/docs/current/static/tablefunc.html[/url]), a w szczególności funkcją crosstab.]]></description>
			<author><![CDATA[dummy@example.com (gszpetkowski)]]></author>
			<pubDate>Wed, 21 Dec 2011 09:31:19 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=3329#p3329</guid>
		</item>
		<item>
			<title><![CDATA[Tabela przestawna??]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=3328#p3328</link>
			<description><![CDATA[Raport wygląda mniej więcej tak:
ID          	TYP ZLECENIA	DATA WYKONANIA 	KIERUNEK S/N 
35240	SERWIS	        2011-12-13	           +            6082
35240	SERWIS	        2011-12-13	           -             6083

Jak zmodyfikować zapytanie aby wyglądało tak:
ID          	TYP ZLECENIA	DATA WYKONANIA 	KIERUNEK S/N    KIERUNEK S/N 
35240	SERWIS	        2011-12-13	           +            6082   -              6083

kluczem jest ID. chodzi o to aby w jednym wierszu była informacja o odebranym urządzeniu i zainstalowanym urządzeniu.]]></description>
			<author><![CDATA[dummy@example.com (lukaszp)]]></author>
			<pubDate>Tue, 20 Dec 2011 21:31:43 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=3328#p3328</guid>
		</item>
	</channel>
</rss>
