Display group title only at the first record within each group

Поиск
Список
Период
Сортировка
От CN
Тема Display group title only at the first record within each group
Дата
Msg-id 1471968815.2343352.703756417.6A1C9C13@webmail.messagingengine.com
обсуждение исходный текст
Список pgsql-sql
Hi!

Such layout is commonly seen on real world reports where duplicated
group titles are discarded except for the first one.

CREATE TABLE x(name TEXT,dt DATE,amount INTEGER);

COPY x FROM stdin;
john    2016-8-20       80
mary    2016-8-17       20
john    2016-7-8        30
john    2016-8-19       40
mary    2016-8-17       30
john    2016-7-8        50
\.

My desired result follows:

john    2016-07-08      50                30    2016-08-19      40    2016-08-20      80
mary    2016-08-17      20                30

Note that "dt" is sorted as if clause
ORDER BY name,dt
was applied to SELECT.

With this SELECT:

SELECT name,ROW_NUMBER() OVER (PARTITION BY name) AS rn_name,dt,ROW_NUMBER() OVER (PARTITION BY name,dt) AS
rn_dt,amount
FROM x;

I get this result:

john    2       2016-07-08      1       30
john    4       2016-07-08      2       50
john    3       2016-08-19      1       40
john    1       2016-08-20      1       80
mary    1       2016-08-17      1       20
mary    2       2016-08-17      2       30

Above result shows that records are not sorted by rn_name and rn_dt.

Were the above records correctly sorted "BY rn_name,rn_dt", the
following SELECT probably would fulfill my ultimate goal:

SELECTCASE WHEN rn_name=1 THEN name ELSE NULL END,CASE WHEN rn_dt=1 THEN dt ELSE NULL END,amount
FROM (SELECT name    ,ROW_NUMBER() OVER (PARTITION BY name) AS rn_name    ,dt    ,ROW_NUMBER() OVER (PARTITION BY
name,dt)AS rn_dt    ,amountFROM x
 
) t

Would someone please give me a hand?

Best Regards,
CN

-- 
http://www.fastmail.com - IMAP accessible web-mail




В списке pgsql-sql по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Autoincrement value in a SELECT statement
Следующее
От: Harald Fuchs
Дата:
Сообщение: Re: Display group title only at the first record within each group