如何按水平显示某个月的所有日期? [英] How to show all date from a certain Month by horizontally?
本文介绍了如何按水平显示某个月的所有日期?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在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屋!
查看全文