解释我的问题与示例查询订单在UNNEST
select p1.zonename,p1.beatname,p1.groupname,p2.partyname,p2.amount,
p2.groupofcompany from
party1 p1 inner join party2 p2 on p1.txno=p2.txno
此类似这样的查询显示结果
ZoneName BeatName GroupName PartyName Amount Groupofcompany
AA BB CC A 100 Y
AA BB CC B 200 Y
DD EE FF C 300 N
但我想这样
AA --> Zone Name
BB --> Beat Name
CC --> Group Name (if groupofcompany y then only show other wise not)
A 100 --> Party Name And Amount
B 200
DD
EE
C 300
显示于是,我试着像这样
SELECT unnest(array[zonename,beatname,groupname,partyname]) AS partyname,
unnest(array[0,0,0,amount]) AS Amount,
unnest(array[1,2,3,4]) AS
ORDER,
row_number() over()
FROM
(SELECT p1.zonename,
p1.beatname,
CASE
WHEN p2.groupofcompany='N' THEN ''
ELSE p1.groupname
END AS groupname,
p2.partyname,
p2.amount,
FROM party1 p1
INNER JOIN party2 p2 ON p1.txno=p2.txno) AS tt
ORDER BY row_number() over(),ORDER
它的显示输出这样
Party Name Amount Order Row_number
AA 1 1
BB 2 1
CC 3 1
A 100 4 1
AA 1 2
BB 2 2
CC 3 2
B 200 4 2
DD 1 3
EE 2 3
3 3
C 300 4 3
但我想这样
Party Name Amount
AA
BB
CC
A 100
B 200
DD
EE
C 300
如何删除重复的和正确的顺序(区域名称,beatname,组名,partyname)
上午使用Postgresql 9.3
你能提供DDL和Sample Data吗? – 2014-12-05 08:14:41
谨防在选择列表中使用unnest:http://www.mesoconcepts.com/2013/06/inconsistent-unnesting-in-postgresql/ – 2014-12-05 11:41:17
@Denis。感谢doc。先生。 – Sathish 2014-12-05 12:05:25