let's say I have a table like this:
CREATE TABLE [dbo].[Scheduler](
[DayOfWeek] [tinyint] NOT NULL,
[Time] [time](0) NOT NULL,
[Action] [varchar](255) NOT NULL
)
And some data, like this:
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')
How can I produce multiple rows in a SELECT statement if DayOfWeek has more than one flag?
For example, this row:
INSERT INTO Scheduler VALUES (62, '06:00:00', 'Every business day')
It will be represented in 5 rows in a SELECT statement (one for each day/flag set)
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
Running the same query with all the data will give me 19 rows.
- 7 rows - one row for each individual day (1, 2, 4, 8, 16, 32, 64)
- 5 rows - business days (62)
- 7 rows - every day (127)
I'm not sure how can I do this. I think I can use a cursor to do this, but it is the best option here?
Thanks.