当前位置: 首页 > 知识库问答 >
问题:

如何连接2个行号

沈弘文
2023-03-14
Im trying to do a query where I want to join the row_numbers RN and RN1 so as to remove the     duplicate rows as shown BOLD in the result set. 
   

    WITH CTE AS (
    SELECT
    PrevEndDate = LAG(edate,1) OVER (PARTITION BY id ORDER BY id)
    , PrevStartDate = LAG(sdate,1) OVER (PARTITION BY id ORDER BY id)
    , p.id, p.edate
    , ROW_NUMBER() OVER (PARTITION BY p.id ORDER BY p.id) as RN1
    FROM table p
    )
    SELECT 
    t.id, t.sdate, t.edate
    , (ROW_NUMBER() OVER (PARTITION BY t.id ORDER BY t.id)) AS RN
    , CTE.RN1
    , CASE 
       WHEN  CTE.PrevEndDate > t.sdate
       THEN DATEDIFF(day,CTE.PrevStartDate,t.sdate) 
      ELSE
        DATEDIFF(day,t.sdate,t.edate)
      END 
    FROM table t 
    INNER JOIN CTE ON CTE.id= t.id AND CTE.edate= t.edate
    --AND RN1 = RN

提前道谢!

共有1个答案

长孙智刚
2023-03-14

您不能在select中定义别名,然后在from(或where)中使用它。您可以将其移动到子查询中。类似于:

with cte as (. . .)
SELECT . . .
FROM (SELECT t.*, ROW_NUMBER() OVER (PARTITION BY t.PRTCPNT_DCN ORDER BY t.PRTCPNT_DCN) as RN
      FROM PRTCPNT_ELIG_SPAN_T t 
     ) t INNER JOIN
     CTE
     ON CTE.PRTCPNT_DCN = t.PRTCPNT_DCN AND
        CTE.PRTCPNT_ELIG_END_DATE = t.PRTCPNT_ELIG_END_DATE AND
        CTE.RN1 = t.RN;
 类似资料:
  • 在Android上也有可能实现同样的目标吗? 更新: 我找到了原因:Android推荐的http客户端不支持http/2!

  • 我使用Wordpress表填充javafx TableView。在WP db中,我有两个表wp_posts和wp_postmeta,我需要通过ID连接表(wp_postmeta中的post_id),并从wp_postmeta中选择特定的行(不是全部)。 例如:wp_postmeta结构post_id,meta_key,meta_value。在meta_key中有3行-_YOAST_WPSEO_TI

  • 我有3个不同类型的键控数据流。 我不能使用联合(允许多个数据流),因为类型不同。我希望避免创建包装器,并将所有流转换为相同的类型。

  • 我有两个表--例如TableA和TableB,其中有一些数据,如本文所定义的--如何基于not条件连接两个表的结果 现在我计划为两个表创建Hibernate实体,并且这些实体彼此不相关。 现在我想要得到基于NOT条件的结果,就像我前面提到的文章中给出的那样。 结果是使用SQL查询: 现在如何为这样的场景创建HQL查询或条件查询。我已经阅读了HQL&Criteria查询的Hibernate文档,但我

  • 我试图通过2列连接2个pyspark数据帧,数据帧是: DF1: df2: 我想得到下面的数据帧: 我试过了: 这会让我: 然后我使用以下方法消除重复项: 有没有更好的方法? 我尝试了其他连接(左连接、内连接等。),但不会得到我想要的结果 还有,有没有更好的方法来消除重复行?

  • 问题内容: 我有两个相等的大小。列表1由10个名称组成,列表2由其电话号码组成。 我想将姓名和号码合而为一。我该怎么做呢? 问题答案: 您可以用于将第二个列表的元素添加到第一个列表: 编辑: 根据上面的说明(“ 我想要新的Arraylist中具有名称和编号的单个String。 ”),您需要循环浏览第一个列表并将第二个列表中的项目追加到它。 像这样: 如果输入: 你会得到: