通过sql查询动态生成列

问题描述 投票:0回答:1

我的后座表有以下各栏

(Id_patient,date_appointment,time_appoitment)
Exp
14,29/12/2019,09:10
19,30/12/2019,11:30

我想创建一个生成这样的结果的sql查询,我选择介于29/12/2019和01/01/2020之间的日期,以及在08:00至23:00之间的时间预约

Time_appoitment,29/12/2019,30/12/2109,31/12/2019,01/01/2020
08:00.         ,Null      ,null      ,Null      ,Null
.
.
09:10          ,14        ,Null      ,Null      ,Null
.
.
11:30          ,Null      ,19        ,Null      ,Null

.

.
23:00          ,Null     ,Null       ,Null      ,Null
mysql sql tsql multiple-columns dynamically-generated
1个回答
0
投票

Markus Winand在这篇文章中详细说明了这个答案:Pivot Rows to Columns

要注意的段落:SQL是一种静态类型的语言:查询必须预先列出结果列。要旋转具有未知或动态属性的表,可以使用多集或文档类型(XML,JSON)在单列中表示键值存储。请参见listagg的符合标准的替代方法:文档类型。

基本上,您要问的不是SQL(作为标准)设计的。但是,某些RDBMS系统中有一种可以满足您需求的解决方案。建议您阅读有关PIVOT,CROSSTAB或类似形式的数据库文档。

© www.soinside.com 2019 - 2024. All rights reserved.