我在postgreSQL名称中将数据库表命名为“时间”,例如:
| Name | | Date1 | |AttendHour1| | Date2 | |AttendHour2|
---------------------------------------------------------------------
| Zakir1 | | 2018-10-01 | | 8.00 | | 2018-10-02 | | 8.00 |
| Zakir2 | | 2018-10-01 | | 9.00 | | 2018-10-02 | | 9.00 |
| Zakir3 | | 2018-10-01 | | 7.00 | | 2018-10-02 | | 7.00 |
从此表中我想要类似的结果。
| Name | | 2018-10-01 | | 2018-10-02 |
----------------------------------------
| Zakir1 | | 8.00 | | 8.00 |
| Zakir2 | | 9.00 | | 9.00 |
| Zakir3 | | 7.00 | | 7.00 |
什么是postgreSQL查询?
答案 0 :(得分:1)
就目前而言,您甚至不需要crosstab()
查询。只是:
SELECT name, AttendHour1 AS "2018-10-01", AttendHour2 AS "2018-10-02"
FROM time;
如果您希望从值列中动态分配名称列:这是不可能的。 SQL不允许动态列名。您需要两步工作流程:
1.动态创建查询字符串。要生成上述查询:
SELECT format('SELECT name, AttendHour1 AS %I, AttendHour2 AS %I FROM time'
, date1, date2)
FROM time
LIMIT 1;
2.执行查询。