В SQL Server 2005 вы можете использовать явное UNPIVOT
:
/*
CREATE TABLE SSS_DOW (
SSS_DOWID int NOT NULL
,[Name] varchar(50) NOT NULL
,Mon char(1) NOT NULL
,Tue char(1) NOT NULL
,Wed char(1) NOT NULL
,Thu char(1) NOT NULL
,Fri char(1) NOT NULL
,Sat char(1) NOT NULL
,Sun Char(1) NOT NULL
,[Description] varchar(50) NOT NULL
)
INSERT INTO SSS_DOW VALUES (2, 'M', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'Monday')
INSERT INTO SSS_DOW VALUES (3, 'MF', 'Y', 'N', 'N', 'N', 'Y', 'N', 'N', 'Monday, Friday')
INSERT INTO SSS_DOW VALUES (28, 'W', 'N', 'N', 'Y', 'N', 'N', 'N', 'N', 'Wednesday')
INSERT INTO SSS_DOW VALUES (41, 'F', 'N', 'N', 'N', 'N', 'Y', 'N', 'N', 'Friday')
INSERT INTO SSS_DOW VALUES (44, 'SaSun', 'N', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Satruday, Sunday')
*/
;WITH DateAbbrev AS (
SELECT number, LEFT(DATENAME(dw, number - 2), 3) AS abbrev
FROM master..spt_values
WHERE type = 'P'
AND number BETWEEN 1 AND 7
)
SELECT SSS_DOWID, DateAbbrev.number AS DayOfWeek
FROM SSS_DOW
UNPIVOT (Flag FOR dow IN ([Mon], [Tue], [Wed], [Thu], [Fri], [Sat], [Sun])) AS pvt
INNER JOIN DateAbbrev
ON DateAbbrev.abbrev = dow
WHERE Flag = 'Y'
AND SSS_DOWID IN (28, 41, 44)
/*
DROP TABLE SSS_DOW
*/
Если у вас уже есть таблица сокращений дат, вы можете присоединиться к ней вместо специального CTE, который я использовал для ее создания.