sql - 如何水平显示某个月份的所有日期?
问题描述
我将 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 查询?
解决方案
就目前而言,您甚至不需要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. 执行查询。
推荐阅读
- reactjs - TypeError:无法读取未定义的属性“lightBoxHandler”
- spring-boot - SpringBoot2 OAuth2 依赖 - 从 springBoot1.5.6 迁移
- javascript - 部署时 Vuejs + Github 页面无法正常工作
- javascript - Javascript通过一个函数多次写表
- python - 硒触发验证码?
- html - 垂直引导面板标题
- powershell - PowerShell Remove-Item 不删除文件
- reactjs - 如何在 React Navigation 中获取 BottomTabNavigator 以显示模态 StackNavigator?
- c# - 如何使一个复选框使 Listview C# 中的所有复选框都选中
- bootstrap-4 - Bootstrap 列跨度为 2 行