Как поместить условие в оператор выбора в T- SQL - PullRequest
0 голосов
/ 17 января 2020

Опекун может оказывать поддержку двум разным службам в одно и то же время начала и окончания, это называется тип обслуживания 1: 2. Уникальный идентификатор для этого типа смены генерируется как тот же уникальный идентификатор для этого типа услуги. Я хочу добавить 2 в конце уникального идентификатора для каждого второго сервиса. Как мне найти это? Имейте в виду, я использую это в рамках СОЮЗА с другими 3 утверждением выбора. Первый запрос над объединением - это один

Мой запрос ниже:

SELECT DISTINCT
CASE  
   WHEN SHIFT_CODE = '1:2 Support' 
      THEN '3'
      ELSE '' 
END [Datatype Id],
CAST(SS.Schedule_Subshift_ID AS VARCHAR(20)) + ' 1:2' [Unique Visit ID]

'' [Date],
'' [Start Time],
''+ ',' [End Time],
''+ ',,,' [Unique Client ID],
'' [Client Forename]

    FROM 

  Subshift

  UNION

SELECT DISTINCT
  CASE 
     WHEN CAST(CAST(EE.Start_Date_SK AS VARCHAR(255)) AS DATE) >= (GETDATE() - 41) 
      THEN ' 11 '
      ELSE ''
  END [DataTypeID],
 '' [Unique Visit ID],
 '' [Date],
 '' [Start Time],
 ''+ ',' [End Time],
 ''+ ',,,' [Unique Client ID],
 '' [Client Forename]
   FROM 
      Subshift

Результат, который я получаю:

Service    Unique Visit ID  Carer           Date        Start Time   End Time    SHIFT_PROPERTY_CODE
 Moira      211870 2          A         16/12/2019        19:00        22:00,      1:2 Support
 Marta      211870 2          A         16/12/2019        19:00        22:00,      1:2 Support
 Rebecca    211871 2          B         19/12/2019        19:00        22:00,      1:2 Support
 Elsie      211871 2          B         19/12/2019        19:00        22:00,      1:2 Support

Желаемый результат должен быть:

Service Unique Visit ID Carer Date Start Time End Time SHIFT_PROPERTY_CODE Moira 211870 A 16/12/2019 19:00 22:00, 1:2 Support Marta 211870 2 A 16/12/2019 19:00 22:00, 1:2 Support Rebecca 211871 B 19/12/2019 19:00 22:00, 1:2 Support Elsie 211871 2 B 19/12/2019 19:00 22:00, 1:2 Support

1 Ответ

0 голосов
/ 21 января 2020

Вы можете попробовать что-то в этом роде:

SELECT 
  Case Row_Number() OVER (Partition By SS.Schedule_Subshift_ID Order By ClientName) 
   when 1 then S.Schedule_Subshift_ID
   when 2 then S.Schedule_Subshift_ID + ' 2'
   end
FROM Subshift

Вы можете, например, разбить на части по идентификатору службы и упорядочить по времени, я не совсем понимаю ваш случай. Помните, что скопированный вами запрос НЕ приводит к результирующим наборам результатов ниже. Так что, если вы хотите, чтобы я был более точным c - пожалуйста, предоставьте правильный запрос.

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