【问题标题】:How select * from composite primary key table如何从复合主键表中选择*
【发布时间】:2018-03-18 04:49:42
【问题描述】:

我学到了How select distinct from composite primary key table

; with temp as (
 select row_number() over (partition by First_PK order by Second_PK desc)
   as row_num, First_PK, Second_PK, data
 from test)
 select * from temp
 where row_num = 1

但我现在面临另一个问题,而不是where row_num = 1 我想要where row_num = MAX(我的意思是最大值)

How select distinct from composite primary key table

【问题讨论】:

  • 你能指定你的样本数据和预期的输出吗..?
  • 我想SELECT * 取决于Second_PK 的最大值
  • 因为您是按 descending 顺序订购 Second_PK,所以选择 where row_num = 1 应该已经为您提供 Second_PK 的最大值(基于您的分区First_PK)

标签: sql sql-server


【解决方案1】:

由于一个排序顺序的最后一行将是相反排序顺序的第一行,您只需将order by子句更改为在窗口函数row_number中使用升序即可:

; with temp as (
 select row_number() over (partition by First_PK order by Second_PK)
   as row_num, First_PK, Second_PK, data
 from test)
 select * from temp
 where row_num = 1

【讨论】:

    【解决方案2】:

    解决方案是:

    ; with temp as (
     select row_number() over (partition by First_PK order by Second_PK)
       as row_num, First_PK, Second_PK, data
     from test)
     select * from temp
     WHERE row_num=(SELECT max(row_num) FROM temp);
    

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      • 2019-10-14
      • 2012-11-27
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      相关资源
      最近更新 更多