SQL Server在一周中的几天内将列转换为具有特定格式的行

SQL Server在一周中的几天内将列转换为具有特定格式的行,sql,sql-server,tsql,Sql,Sql Server,Tsql,我将数据存储在SQL Server中,如下所示,每周每天都有存储开放时间。我们大约有1000家商店。下面是示例数据的存储方式 现在我想以这种格式生成数据 以下是基本查询: select StoreId, SqlDayOfWeek, Closed, TimeOpen, TimeClosed from StoreHours 你能帮我查询一下我提到的格式吗 Select StoreID ,Schedule = stuff((Select concat('_'

我将数据存储在SQL Server中,如下所示,每周每天都有存储开放时间。我们大约有1000家商店。下面是示例数据的存储方式

现在我想以这种格式生成数据

以下是基本查询:

select StoreId, SqlDayOfWeek, Closed, TimeOpen, TimeClosed 
from StoreHours 
你能帮我查询一下我提到的格式吗

Select StoreID
      ,Schedule = stuff((Select concat('_'
                                      ,choose(SQLDayOfWeek,'Sun','Mon','Tue','Wed','Thu','Fri','Sat')+','
                                      ,IIF(Closed=1,'Closed',format(convert(datetime,TimeOpen),'HHmm')+',')
                                      ,IIF(Closed=1,'',format(convert(datetime,TimeClosed),'HHmm'))
                                      )
                          From  YourTable 
                          Where StoreID=A.StoreID 
                          Order By [SQLDayOfWeek]
                          For XML Path ('')),1,1,'') +';'
 From (Select Distinct StoreID from YourTable) A
 Group By StoreID
 Order By StoreID

返回

这里的大多数人希望样本表数据是格式化文本,而不是图像(或指向图像的链接)。谢谢@John Cappelletti.d。我稍微调整了一下以满足我的需要。但它工作得很好。@user8067273很高兴它有帮助:)