我需要帮助设计一个 sql 脚本,该脚本将根据列值对托架项目进行排序。如果 level 列值为偶数,则 bay 上升,但如果 level 列为奇数,则 bay 下降。我有 12 个级别,每个级别有 54 个隔间。因此,缩短示例(忽略级别编号后的点)
Level Bay
1 5
1 4
1 54
1 13
2 8
2 3
2 4
结果
Level Bay
1 4
1 5
1 13
1 54
2 8
2 4
2 3
这是脚本,因为它在将 varchar 级别转换为 int 时给出转换失败错误。
SELECT cast (SUBSTRING(cm.description, CHARINDEX('Bay:', cm.description) + 4, CHARINDEX(' ', cm.description, CHARINDEX('Bay:', cm.description)) - CHARINDEX('Bay:', cm.description) - 4) AS INT) AS Bay,
cast (SUBSTRING(cm.description, CHARINDEX('Level:', cm.description) + 6, CHARINDEX(' ', cm.description, CHARINDEX('Level:', cm.description)) - CHARINDEX('Level:', cm.description) - 6)AS INT) AS level
FROM [Test].[Test].[Stations] AS cm
WHERE ( cm.StationTypeId = '1' )
ORDER BY CASE 'level' % 2
WHEN 0 THEN 'bay'
WHEN 1 THEN '-bay'
END;
这是每个级别的描述栏:
Aisle:1 Bay:1 Level:1 Side:E
order by
level,
case level % 2
when 0 then -bay
when 1 then bay
end