【问题标题】:Select rows with same value in one column but differing value in second column选择一列中具有相同值但在第二列中具有不同值的行
【发布时间】:2015-07-17 14:02:33
【问题描述】:

我正在使用 PL-SQL。我确实有一个名为 objectlist 的表。在这张表中,我确实有序列号,命名为 changeno,每个都有生产日期。

我看到有些序列号有不同的生产日期。我想列出生产日期不同的序列号

假设序列号 1234 在表中有两个生产日期。所以,我的 sql 应该显示为

1234   12.01.2015   
1234   01.12.2015

我不知道哪些连续剧的生产日期不止一个。请告诉我如何找到它。

【问题讨论】:

  • 为什么你认为你需要一个存储过程?

标签: sql oracle plsql greatest-n-per-group


【解决方案1】:

一种可能性是在这里使用解析函数count()

select changeno, pdate 
  from (
    select changeno, pdate, count(1) over (partition by changeno) cnt 
      from objectlist )
  where cnt > 1 order by changeno, pdate

SQLFiddle demo

如果你在 PLSQL 中需要这个而不是把这个查询放在过程、函数或块中:

begin 
  for c in (
    select changeno, pdate 
      from (
        select changeno, pdate, count(1) over (partition by changeno) cnt 
          from objectlist )
      where cnt > 1 order by changeno, pdate )
  loop
    dbms_output.put_line(lpad(c.changeno, 10)||' '||c.pdate);
  end loop;
end; 

【讨论】:

    猜你喜欢
    • 2017-02-14
    • 2019-05-31
    • 2012-05-25
    • 1970-01-01
    • 2017-12-24
    • 2022-11-17
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多