如何按水平显示某个月的所有日期? [英] How to show all date from a certain Month by horizontally?

查看:109
本文介绍了如何按水平显示某个月的所有日期?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在postgreSQL名称中有一个数据库表,像时间一样:

I have database table in postgreSQL name as "time" like:

|  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    | 

从此表中,我希望得到这样的结果。

From this table I want the result like..

|  Name  | | 2018-10-01 | | 2018-10-02 |
----------------------------------------
| Zakir1 | |   8.00     | |   8.00     |
| Zakir2 | |   9.00     | |   9.00     |
| Zakir3 | |   7.00     | |   7.00     |

什么是postgreSQL查询?

What is postgreSQL Query ?

推荐答案

就目前而言,您甚至不需要 crosstab()查询。只是:

As it stands, you don't even need a crosstab() query for this. Just:

SELECT name, AttendHour1 AS "2018-10-01", AttendHour2 AS "2018-10-02"
FROM   time;

如果您希望从列动态分配名称列值:这是不可能的。 SQL不允许动态列名。您需要两步工作流:

If your desire is to assign column names dynamically from column values: that's not possible. SQL does not allow dynamic column names. You need a two-step workflow:

要生成上述查询:

SELECT format('SELECT name, AttendHour1 AS %I, AttendHour2 AS %I FROM time'
             , date1, date2)
FROM   time
LIMIT  1;

这篇关于如何按水平显示某个月的所有日期?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆