如何将SQL tbl_Shift表中的OffDay列转换为行形式展示?
解决方法:将多列转为单列多行的节假日列表
嘿,我明白你的需求了——你想要把OffDay1和生效的OffDay2拆成单列多行的形式展示,而不是放在同一行里。之前的查询用ISNULL是在同一行内做值的替换,自然达不到多行的效果,咱们换个思路用UNION ALL来实现:
正确的SQL查询语句
SELECT OffDay1 AS Holidays FROM [HRM].[tbl_Shift] UNION ALL SELECT OffDay2 AS Holidays FROM [HRM].[tbl_Shift] WHERE IsAlternateOffDay2 = 1 -- Bit类型中True对应数值1,False对应0
为什么这个方法有效?
UNION ALL会把两个SELECT语句的结果合并成一个结果集,并且保留所有行(如果需要自动去重可以换成UNION)- 第一个
SELECT负责取出所有记录的OffDay1 - 第二个
SELECT只取出那些IsAlternateOffDay2为True(也就是数值1)的OffDay2,确保只有生效的休息日才会被展示
执行这个查询后,你就能得到预期的结果:
Holidays ---------- Sunday Saturday
如果你的表中有多条记录,这个方法也能正确处理每条记录对应的休息日,把它们都拆成单独的行。
内容的提问来源于stack exchange,提问作者Doonie Darkoo
相关产品推荐
相关产品推荐

