繁体   English   中英

如何按水平显示某个月的所有日期?

[英]How to show all date from a certain Month by horizontally?

我在postgreSQL名称中将数据库表命名为“ time”,例如:

|  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查询?

就目前而言,您甚至不需要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.执行查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM