我真的很感激这方面的帮助,我被严重卡住了。基本上我有一张桌子
看起来像这样:
SSS_DOWID Name Mon Tue Wed Thu Fri Sat Sun Description
2 M Y N N N N N N Monday
3 MF Y N N N Y N N Monday, Friday
.......
18 T N Y N N N N N Tuesday
........
etc.
我需要做的是将此表中的值转换为仅包含
一周中的几天对应的数字,例如,1 代表星期日,2 代表星期一,3 代表星期二,等等,一直到 8 代表星期日。
所以我有一点点 SQL:
DECLARE @strDays table
(SSS_DOWID int)
INSERT INTO @strDays
SELECT
case (sun) when 'Y' then '1' else '' end +
case (mon) when 'Y' then '2' else '' end +
case (tue) when 'Y' then '3' else '' end +
case (wed) when 'Y' then '4' else '' end +
case (thu) when 'Y' then '5' else '' end +
case (fri) when 'Y' then '6' else '' end +
case (sat) when 'Y' then '7' else '' end
FROM
[dbo].SSS_DOW WITH (NOLOCK)
WHERE
SSS_DOWID IN (28,41,44)
SELECT * FROM @strDays
这适用于个别日子,除了日子组合。所以在这种情况下,当我通过
28(周三)、41(周五)和 44(周六),我得到 4(完美)、6(完美)和 17(哦,废话——应该是
1 和 7,分别)。
谁能帮我重组我的 SQL 以便我得到一个包含 1、4、6 和 7 的表
4、6、17?