Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL第二个最新日期子选择_Sql_Sql Server_Date_Max - Fatal编程技术网

SQL第二个最新日期子选择

SQL第二个最新日期子选择,sql,sql-server,date,max,Sql,Sql Server,Date,Max,我有一个问题: SELECT MAX (EXPDATE) AS PREVDATE, BUSINESSUNIT AS BUSUNIT, UNIT AS UNITNO FROM proddta.V_LeaseExpiry_profile WHERE EXPDATE < ( ( SELECT MAX (EXPDATE) FROM proddta.V_LeaseExpiry_profile

我有一个问题:

SELECT 
  MAX (EXPDATE) AS PREVDATE, 
  BUSINESSUNIT AS BUSUNIT, 
  UNIT AS UNITNO
FROM 
  proddta.V_LeaseExpiry_profile
WHERE 
  EXPDATE < (
    (  SELECT 
         MAX (EXPDATE)
       FROM 
         proddta.V_LeaseExpiry_profile
       WHERE 
         TRIM (BUSINESSUNIT) = '33700' AND UNIT = '900')
    )
  AND 
  TRIM (BUSINESSUNIT) = '33700'
  AND 
  UNIT = '900'
GROUP BY 
  BUSINESSUNIT, 
  UNIT
当我指定业务部门和部门时,这很好,但当我从查询中删除它们时,即-我想对所有部门执行此操作,它不再获取第二个最新日期-它获取最新日期


基本上,我试图找到每个单元的前一个到期日,但可能有重复的行,因此我需要确保它与最大到期日不同。

如果您想要第二个到期日,请使用密集排列或偏移/提取:


这将为所有业务单元/单元组合返回适当的值。如果您只需要一个组合,您可以使用where子句来获得一个组合。

非常感谢您的快速回复!当我在查询分析器中输入这个时,它告诉我p。是未定义的。。。我遗漏了什么吗?@4bpauly从proddta.V_LeaseExpiry_profile作为p,或者将子查询p.*更改为*这在使用最后一个日期时非常有效。还有一个请求——我现在正试图按业务部门和业务部门对它们进行分组,但似乎不起作用。有什么想法吗?你确定你在使用sql server吗?Trim不是sql server的内置功能。
select p.*
from (select p.*,
             dense_rank() over (partition by businessunit, unit
                                order by EXPDATE desc) as seqnum
      from proddta.V_LeaseExpiry_profile 
     ) p
where seqnum = 2;