Postgresql中具有复杂联接的SQL查询

时间:2018-11-29 20:25:27

标签: sql database postgresql join

我有一个包含以下5列的表格:

"REPORT NUMBER", "PAGE ID", "ROW NUMBER", "COLUMN NUMBER","VALUE"

下面是我在SQL中拥有的1.6MM行中的5个示例。

"580498"    "B000002"   "00500" "01600" "17"    
"580498"    "B000002"   "00600" "02400" "201"    
"580508"    "B000002"   "00500" "01600" "42"    
"580508"    "A000000"   "01000" "00200" "909874"    
"580508"    "A000000"   "01000" "00300" "1432422"

每个“页行列”组合都是一个特殊值的映射。对于实例页面B000002,第00500行第01600列告诉我该报告编号的员工人数。其他组合会按报表编号显示我的收入,支出等。

我正在寻找一个包含以下各列的新表:

"REPORT NUMBER", "EMPLOYEES", "ANOTHER COLUMN", "ANOTHER COLUMN"
"580498"    "17"    ""  ""
"580508"    "42"    ""  ""

每个报告编号只有一行。我知道可以继续进行连接,但是有150多个列要添加,因此希望有另一种方法可以做到这一点。

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您需要条件聚合:

select report_number,
       max(value) filter (where Page = 'B000002' and row = '00500' and column = '01600') as num_employees 
rom t
group by report_number;