SQL Server конвертировать столбцы в строки с определенным форматом для дней недели - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть данные Store в SQL Server, как показано ниже, где указаны часы работы магазина для каждого дня недели.У нас около 1000 магазинов.Вот как хранятся образцы данных.

Current SQL Data Image

Теперь я хочу сгенерировать данные в этом формате.

New Data Format Image

Вот базовый запрос:

select StoreId, SqlDayOfWeek, Closed, TimeOpen, TimeClosed 
from StoreHours 

Не могли бы вы помочь мне с запросом в формате, который я упомянул.

1 Ответ

0 голосов
/ 25 сентября 2019
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

Возвращает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...