尝试根据第一个字段值的大小对不同字段的数据进行排序。我以为这样行得通,但找不到错误
Order By
Case LGP_Colorway_PDC1_int when 10
then LGP_Style_Kind_enum,
LGP_Colorway_PDC2_int,
LGP_Colorway_PDC3_int,
LGP_Style_SAPHrchyLvl2_enum,
LGP_ShapeMaster_ManualCode_string
else LGP_Colorway_PDC1_int,
LGP_Colorway_PDC2_int,
LGP_Colorway_PDC3_int,
LGP_Style_SAPHrchyLvl2_enum,
LGP_ShapeMaster_ManualCode_string end
我的sql说“order by”附近有语法错误
另外,如何对lgp\u style\u kind\u enum进行降序排序?
3条答案
按热度按时间nkhmeac61#
case语句的结果应该只是一个值,然后用逗号分隔其他值。您拥有它的方式类似于通过连接所有其他字段在代码中构建sql语句字符串的方式。
不管case语句中的逻辑遵循哪条路径,其余的排序顺序都是相同的。
gijlo24d2#
一
case
表达式返回单个值。逗号分隔的列表不是单个值。你可以把它分成几个部分来解决这个问题
case
表达:请注意,这会将每个列引用拆分为自己的列引用
case
表情。这是故意的。否则,您必须确保这些类型是兼容的——如果不兼容,则可能会出错。而且,它使用
<>
假设LGP_Colorway_PDC1_int
永远不会NULL
. 如果可以的话NULL
,那么逻辑需要考虑到这一点。xfyts7mz3#
要根据需要订购和添加desc,我执行了以下代码: