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

SQL Server使用联合所有和分页

许照
2023-03-14
问题内容

当我们使用union all从两个表中获取结果时,如何应用分页。以下是这里的代码,我在用于分页的“ row_num”列中获取重复值。

;WITH resultSetCTE AS 
  (
SELECT
    ROW_NUMBER() OVER 
    (
        ORDER BY nr.is_read,nr.is_read_cashier,
    CASE @columnSortNameDirection WHEN 'Pin' THEN r.name END ASC,
    CASE @columnSortNameDirection WHEN 'PinDesc' THEN r.firstname END DESC  
    ) AS 'row_num',
    r.clave_receiver AS 'Pin',
    r.id_branch AS 'Id_Branch',
    r.id_receiver AS 'Id_receiver',  
    s.name_sender AS 'SenderFullName',
    r.name_receiver AS 'ReceiverFullName',
    r.id_flag_receiver AS  'Status',
    pas.option_name AS 'ApprovalStatus',
    r.mode_pay_receiver AS 'PaymentModeId'


    UNION ALL

    SELECT
    ROW_NUMBER() OVER 
    (
    ORDER BY nr.is_read,nr.is_read_cashier,
    CASE @columnSortNameDirection WHEN 'Pin' THEN r.name END ASC,
    CASE @columnSortNameDirection WHEN 'PinDesc' THEN r.firstname END DESC  
    ) AS 'row_num',
    r.clave_receiver AS 'Pin',
    r.id_branch AS 'Id_Branch',
    r.id_receiver AS 'Id_receiver',  
    s.name_sender AS 'SenderFullName',
    r.name_receiver AS 'ReceiverFullName',
    r.id_flag_receiver AS  'Status',
    pas.option_name AS 'ApprovalStatus',
    r.mode_pay_receiver AS 'PaymentModeId'

 )
    SELECT *,
 (SELECT COUNT(1) FROM resultSetCTE) AS 'RecordCount' 
 FROM resultSetCTE 
 WHERE row_num BETWEEN (1 - 1) * 15 + 1 AND 1 * 15  
 ORDER by IsRead,IsReadCashier

问题答案:

尽管您还没有发布完整的查询,但是您可以尝试这样的操作

declare @columnSortNameDirection varchar(5)
;WITH resultSetCTE AS 
  (

select ROW_NUMBER() OVER 
(
        ORDER BY nr.is_read,nr.is_read_cashier,
    CASE @columnSortNameDirection WHEN 'Pin' THEN r.name END ASC,
    CASE @columnSortNameDirection WHEN 'PinDesc' THEN r.firstname END DESC  
) AS 'row_num',*  from (    SELECT    
    r.clave_receiver AS 'Pin',
    r.id_branch AS 'Id_Branch',
    r.id_receiver AS 'Id_receiver',  
    s.name_sender AS 'SenderFullName',
    r.name_receiver AS 'ReceiverFullName',
    r.id_flag_receiver AS  'Status',
    pas.option_name AS 'ApprovalStatus',
    r.mode_pay_receiver AS 'PaymentModeId'
    UNION ALL
    SELECT

    r.clave_receiver AS 'Pin',
    r.id_branch AS 'Id_Branch',
    r.id_receiver AS 'Id_receiver',  
    s.name_sender AS 'SenderFullName',
    r.name_receiver AS 'ReceiverFullName',
    r.id_flag_receiver AS  'Status',
    pas.option_name AS 'ApprovalStatus',
    r.mode_pay_receiver AS 'PaymentModeId') as A

 )
  Select *, 
 (SELECT COUNT(1) FROM resultSetCTE) AS 'RecordCount' 
 FROM resultSetCTE 
 WHERE row_num BETWEEN (1 - 1) * 15 + 1 AND 1 * 15  
 ORDER by IsRead,IsReadCashier


 类似资料:
  • 接口说明 合并指定的上传的素材的所有文件分片 API地址 POST /api/upload/1.0.0/compose 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 dataguid string form 是 数据标识 chunks string form 是 文件分片数量 fileName string form 是 文件名称 响应字段说明 无 响应成功示例 { "

  • 本文向大家介绍详解SQLServer和Oracle的分页查询,包括了详解SQLServer和Oracle的分页查询的使用技巧和注意事项,需要的朋友参考一下 不管是DRP中的分页查询代码的实现还是面试题中看到的关于分页查询的考察,都给我一个提示:分页查询是重要的。当数据量大的时候是必须考虑的。之前一直没有花时间停下来好好总结这里。现在又将Oracle视频中关于分页查询的内容看了一遍,发现很容易就懂了

  • 本文向大家介绍使用Pandas合并,联接和连接DataFrame,包括了使用Pandas合并,联接和连接DataFrame的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将学习使用pandas 库合并,联接和连接DataFrame 。我认为您已经熟悉数据框和熊猫库。让我们一一看这三个操作。 合并 我们有一个名为pandas.merge()的方法,该方法类似于数据库联接操作 来合并数据帧。

  • 我有一个表'gems'在那里存储帖子(例如blog)。对帖子的回复也存储在同一个表中,其中有一个字段存储父帖子的密钥。每个帖子都可以附上文件。 我需要得到一个与相关的回复和附加文件的帖子列表。因此“gems”有多个左联接--一个连接到它自己,一个连接到带有文件名的“gemdetail”。此查询有效: 但是,如果我每个帖子有20个回复和10个文件,那么返回的记录数是每个帖子200条。限制条款起作用,

  • 这个问题与这个问题非常相似,但我不想把每个原始组中的一个项目放在每个输出组中,而是希望每个原始组中的多个项目放在每个输出组中。 我有以下数据。 包含6个项目,包含6个项目,包含7个项目。基于这些初始组,我想将项目放入3个新组,确保每个新组包含相同数量(2或)的项目。此外,这3个新组中的每一个都不能重复这些项目——每个项目只能为每个新组使用一次。例如,一个可能的输出可能是下面的这个输出。 实际上,我

  • 我在Stackoverflow上看到了很多解释关系区别的帖子:关联、聚合、组合和继承,并附有例子。然而,更具体地说,我对每种方法的优点和缺点,以及什么时候一种方法对手头的任务最有效感到困惑。这是我一直无法找到一个好答案的事情。 为了与论坛的指导方针保持一致,我没有问为什么人们个人更喜欢使用继承而不是组合。我特别感兴趣的是每种方法中的任何客观优点/缺点,尽管听起来很强。一、 e.一种方法是创建比另一