当前位置: 首页 > 面试题库 >

案例中的排序方式和不同类型

夏立果
2023-03-14
问题内容

我需要根据对参数的整数输入,按列对结果集进行排序。

问题是,我需要对OrderBy使用CASE,并且似乎代码在case列中接受第一个“ TYPE”……其他任何类型均失败。

我的代码是这样的:

    WITH error_table AS  
 (  
  SELECT Row_Number() OVER   
   (ORDER BY  
        CASE @orderBy
            WHEN 1 THEN received_date  -- Last Rx'd message  
            WHEN 2 THEN message_id -- Message Id  
            WHEN 3 THEN zibmat.short_name -- Message action type  
            WHEN 4 THEN error_action.short_name -- Status type  
            WHEN 5 THEN ime.[allocated_date] -- Allocated Date  
            ELSE received_date
    END) AS RowNumber

   ,ime.[ijis_message_error_id]  
      ,ime.[message_id]  
      ,ime.[message_version]

因此,当OrderBy为1时,它将起作用。它按rx_date排序…但是当我发送2时,它失败,并出现数据时间转换错误。

看来所有类型都必须相同…

发送5可以正常工作,因为那也是约会时间。

有办法解决这个问题吗?


问题答案:

CASE语句必须只能解析为一种数据类型。这与您知道@orderby仅会选择一个分支并且它将是一种特定的数据类型无关。

您可以使用类似这样的东西,虽然笨拙但可以使用。

ORDER BY
CASE @orderBy WHEN 1 THEN received_date -- Last Rx'd message
WHEN 2 THEN 0
WHEN 3 THEN 0
WHEN 4 THEN 0
WHEN 5 THEN ime.[allocated_date] -- Allocated Date
ELSE received_date END,
CASE @orderBy WHEN 1 THEN 0
WHEN 2 THEN message_id -- Message Id
WHEN 3 THEN 0
WHEN 4 THEN 0
WHEN 5 THEN 0
ELSE 0 END,
CASE @orderBy WHEN 1 THEN ''
WHEN 2 THEN ''
WHEN 3 THEN zibmat.short_name -- Message action type
WHEN 4 THEN error_action.short_name -- Status type
WHEN 5 THEN ''
ELSE '' END


 类似资料:
  • 我对不同类型的标识符案例以及人们对它们的称呼感兴趣。你知道这个名单上还有其他名字吗? :骆驼大小写(例如在java变量名中) :大写的骆驼大小写(例如在java类名中) :Snake大小写(例如在python变量名中) : Kebab大小写(例如球拍名称) :平面大小写(例如在java包名称) :大写(例如C常量名称)

  • 本文向大家介绍Java ArrayList的不同排序方法,包括了Java ArrayList的不同排序方法的使用技巧和注意事项,需要的朋友参考一下 由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一。ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在添加和移除元素的时候进行动态的扩展和缩减。你可能已经

  • 所以,我基本上学会了C++中的类和模板函数。假设我有一个班级学生的记录,上面有他们的卷号、姓名和总分。我正在使用索引排序对记录进行排序。现在可以根据姓名、卷面或总分进行排序。如何使用模板函数合并所有这三个? 所以我不想一遍又一遍地写函数,而是想用R[A[j]].name替换R[A[j]].roll和R[A[j]].total。有可能吗?

  • 问题内容: 对于此案例类: 特拉维斯·布朗(Travis Brown)解释了如何创建此答案: 但是,我正在尝试实现: 出现以下编译时错误: 如何解决此错误? 另外,我怎么写我在哪里得到/定义了和: ? 问题答案: 好问题!您不能使用的原因是因为它不是函子。 您可以将其视为类似。但是,假设我有一个和一个。尝试想出一些方法来构成这些函数以获得一个—这是不可能的。 另一方面,有点像,并且是一个函子-它具

  • 问题内容: 我面临有关Java方法同步的问题。希望我能简要解释一下: 我在两个不同的类中,在两个不同的包中有两个不同的方法。就像是: 好的,所以现在我需要同步这两个 不是thread的方法 。到目前为止,我有两种不同的方法: 共享信号量 。 在和外部创建一个共享的静态信号量,例如: 无论如何,我真的不知道JVM是否会将其视为共享信号量。 已同步(SharedClass.class) 。 使用共享类

  • 本文向大家介绍Java Collections.sort()排序代码案例,包括了Java Collections.sort()排序代码案例的使用技巧和注意事项,需要的朋友参考一下 1、案例: Person对象(名字,id,年龄) 要求按照,年龄从小到大排序,年龄相等,按照名字的字典顺序de倒序排序 2、案例设计:      1)使用ArrayList存储Person对象,       2)利用Co