скажем, у меня есть таблица вроде этого:Расширьте битовых полей в несколько строк (любопытное соединение)
CREATE TABLE [dbo].[Scheduler](
[DayOfWeek] [tinyint] NOT NULL,
[Time] [time](0) NOT NULL,
[Action] [varchar](255) NOT NULL
)
И некоторые данные, например:
INSERT INTO Scheduler VALUES (1, '11:00:00', 'Sunday')
INSERT INTO Scheduler VALUES (2, '12:00:00', 'Monday')
INSERT INTO Scheduler VALUES (4, '13:00:00', 'Tuesday')
INSERT INTO Scheduler VALUES (8, '14:00:00', 'Wednesday')
INSERT INTO Scheduler VALUES (16, '15:00:00', 'Thursday')
INSERT INTO Scheduler VALUES (32, '16:00:00', 'Friday')
INSERT INTO Scheduler VALUES (64, '17:00:00', 'Saturday')
INSERT INTO Scheduler VALUES (62, '06:00:00', 'Every business day')
INSERT INTO Scheduler VALUES (127, '08:00:00', 'Every day')
Как я могу производить несколько строк в инструкция SELECT, если DayOfWeek имеет более одного флага?
Например, эта строка:
INSERT INTO Scheduler VALUES (62, '06:00:00', 'Every business day')
Он будет представлен в 5 строк в ЗЕЬЕСТ (по одному для каждого набора день/флаг)
DayOfWeek Time Message
--------- ---------------- ---------------------------
2 06:00:00 Every business day
4 06:00:00 Every business day
8 06:00:00 Every business day
16 06:00:00 Every business day
32 06:00:00 Every business day
Запуск тот же запрос со всеми данные дадут мне 19 строк.
- 7 строк - по одной строке для каждого отдельного дня (1, 2, 4, 8, 16, 32, 64)
- 5 строк - рабочие дни (62)
- 7 рядов - каждый день (127)
Я не уверен, как я могу это сделать. Я думаю, что могу использовать курсор для этого, но это лучший вариант здесь?
Спасибо.
Непонятно, почему вы, например, превращаетесь в эти 5 строк, можете ли вы расширить это? – sagi
Конечно, я могу ... DayOfWeek = 62 Это представляет 2 + 4 + 8 + 16 + 32 = 62 соответственно: понедельник + вторник + среда + четверг + жара. Таким образом, чтобы одна строка представляла 5 дней недели, будет выполняться одна и та же задача. – navossoc
Все ли эти ценности у вас в таблице? Или у вас могут быть и другие ценности? –