如何解决以日历格式显示带有日期时间列的记录
我正在尝试使用 SQL Server 解决问题。
我有“from”和“to”日期时间列和状态的记录。确实是酒店客房预订记录。
id UnitId From To State
1 1 2021-07-01 2021-07-10 1 (reserved)
1 2 2021-07-15 2021-08-15 2 (occupied)
1 1 2021-07-11 2021-07-25 1
我需要以日历格式显示它们
Unit 20210701 20210702 20210703 ....... 20210711 20210712 ....
1 R R R
2 O O
我可以逐个单元,逐日查找当天的单元状态,然后输入 R 或 O。
但这需要很长时间才能在日历中显示多个单位和长时间。
也许有人可以提供任何想法如何转换预订记录并将其显示为日历?
非常感谢。
解决方法
在这里我为您提供一个动态 PIVOT。我使用了你提供的数据。
DECLARE @SQL AS VARCHAR(MAX),@cols_ AS vARCHAR(MAX)
--Making the column list dynamically
SELECT @cols_ = STUFF((SELECT DISTINCT ','+QUOTENAME( REPLACE([T2].[From],'-','') )
FROM [CalenderData] [T2]
FOR XML PATH('')),1,'')
print @cols_
--preparing PIVOT query dynamically.
SET @SQL = ' SELECT
pivoted.UnitID,'+@cols_+'
FROM
(
SELECT
[T2].[UnitID],[T2].[From],CASE WHEN [T2].[State] = 2 THEN ''R''
ELSE ''O'' END AS [Status]
FROM [CalenderData] [T2]
) AS [p]
PIVOT
(
MIN([P].[Status])
FOR [P].[From] IN (' + @cols_ + ')
) AS pivoted;
';
--PRINT( @SQL) this will help you to Check the generated query from Dynamic Code
EXEC (@SQL)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。