<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - crosstab - jasne i proste wytłumaczenie]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=1460</link>
		<description><![CDATA[Najświeższe odpowiedzi w crosstab - jasne i proste wytłumaczenie.]]></description>
		<lastBuildDate>Mon, 18 Feb 2013 20:30:32 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: crosstab - jasne i proste wytłumaczenie]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=4054#p4054</link>
			<description><![CDATA[poczytaj helpa do crosstaba, twój przykład powinien wyglądać w uproszczeniu mniej więcej tak
select * from crosstab(
$$
select 'a'::text as wiersz,20130131::integer as kolumna,1 as sum
UNION ALL
select 'a',20121231,2
UNION ALL
select 'a',20121130,3
UNION ALL
select 'a',20121031,4
UNION ALL
select 'b',20120930,5
$$
,'values(20130131), (20121231), (20121130), (20121031), (20120930)'
)
as tabela
(wiersz text,"20130131" integer, "20121231" integer, "20121130" integer, "20121031" integer, "20120930" integer); 

Proponuję byś pobawił się danymi, a zobaczysz, że crosstab ma sporo ograniczeń choć jak już wiesz o co chodzi to całkiem przydatne narzędzie]]></description>
			<author><![CDATA[dummy@example.com (c_michal)]]></author>
			<pubDate>Mon, 18 Feb 2013 20:30:32 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=4054#p4054</guid>
		</item>
		<item>
			<title><![CDATA[Odp: crosstab - jasne i proste wytłumaczenie]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=4024#p4024</link>
			<description><![CDATA[Witam,

Sam sobie pokombinowałem i napisałem takie zapytanie:

select * from crosstab(
'
select
situation_date::integer,
sum(saldo_pln) as saldo
from msr_1301 group by 1
UNION ALL
select
situation_date::integer,
sum(saldo_pln) as saldo
from msr_1212 group by 1
UNION ALL
select
situation_date::integer,
sum(saldo_pln) as saldo
from msr_1211 group by 1
UNION ALL
select
situation_date::integer,
sum(saldo_pln) as saldo
from msr_1210 group by 1
UNION ALL
select
situation_date::integer,
sum(saldo_pln) as saldo
from msr_1209 group by 1
',
$$
VALUES ('20130131', '20121231', '20121130', '20121031', '20120930')
$$
)
as tabela
("20130131" integer, "20121231" integer, "20121130" integer, "20121031" integer, "20120930" integer);

i zwraca błąd "provided "categories" SQL must return 1 column of at least one row"

Wie ktoś o co może chodzić ?]]></description>
			<author><![CDATA[dummy@example.com (bogo126)]]></author>
			<pubDate>Mon, 18 Feb 2013 14:03:47 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=4024#p4024</guid>
		</item>
		<item>
			<title><![CDATA[Odp: crosstab - jasne i proste wytłumaczenie]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=3984#p3984</link>
			<description><![CDATA[Dzięki za odpowiedź - przykład zanalizowany, tylko zastanawiam się: po co w crosstabie jest ten element generate series ?]]></description>
			<author><![CDATA[dummy@example.com (bogo126)]]></author>
			<pubDate>Mon, 18 Feb 2013 11:52:41 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=3984#p3984</guid>
		</item>
		<item>
			<title><![CDATA[Odp: crosstab - jasne i proste wytłumaczenie]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=3939#p3939</link>
			<description><![CDATA[Tu masz opisany praktycznie taki sam problem z przykładem i opisem [url=http://forum.postgresql.org.pl/viewtopic.php?id=1424]Forum PostgreSQL[/url]]]></description>
			<author><![CDATA[dummy@example.com (c_michal)]]></author>
			<pubDate>Mon, 18 Feb 2013 10:14:14 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=3939#p3939</guid>
		</item>
		<item>
			<title><![CDATA[crosstab - jasne i proste wytłumaczenie]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=3908#p3908</link>
			<description><![CDATA[Cześć Wam,

Jestem nowy na tym forum. Od około roku pracuję na postgresie - już wiele się nauczyłem, ale (jak widać) jeszcze wiele przede mną. Chciałbym Was zapytać o crosstaba - a mianowicie, aby ktoś mi go wytłumaczył tak od podstaw. Tak - przeczytałem dokumentację na stronce i temat o "drzewach" na forum. 

Załóżmy, że mam zapytanie, które daje wynik:
data_stanu ; suma_salda
20130131;  15
20121231;  16
20121130;  17
20121031;  18
20120930;  19

i chciałbym używajć crosstaba (bez crosstaba oczywiście umiem to zrobić) i otrzymać wynik w postaci:

20120930 ; 20121031 ; 20121130 ; 20121231 ; 20130131
19             ; 18             ; 17             ;16              ; 15

napisałem coś takiego:

select * from crosstab('zapytanie generujące dane wyjściowe',
$$values ('20120930'), ('20121031'), ('20121130'), ('20121231'), ('20130131')$$)
as tabela()

i nie wiem, co dalej. Może zamiast wymieniać daty, powinienem użyć generate series (1,5). Sam ni wiem. Proszę o pomoc. 

Pozdrawiam,
bogo126]]></description>
			<author><![CDATA[dummy@example.com (bogo126)]]></author>
			<pubDate>Mon, 18 Feb 2013 09:03:01 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=3908#p3908</guid>
		</item>
	</channel>
</rss>
