Sql 如何在Oracle分析函数中忽略空值

Sql 如何在Oracle分析函数中忽略空值,sql,oracle,Sql,Oracle,此查询: select BILL_ID, BILL_DATE FROM BILLS 返回以下结果: bill_id----------bill_date 1943336232 12/03/15 null null 使用此sql: select FIRST_VALUE(BILL_ID) OVER(PARTITION BY ACCOUNT_ID ORDER BY BILL_DT DESC) bill_id, FIRST_VALUE(BILL_DATE) OVE

此查询:

select BILL_ID, BILL_DATE FROM BILLS
返回以下结果:

bill_id----------bill_date

1943336232      12/03/15

null            null
使用此sql:

select
FIRST_VALUE(BILL_ID) OVER(PARTITION BY ACCOUNT_ID ORDER BY BILL_DT DESC) bill_id,
FIRST_VALUE(BILL_DATE) OVER(PARTITION BY ACCOUNT_ID ORDER BY BILL_DT DESC) bill_date
我得到:

bill_id----------bill_date

null            null
什么是让我得到的查询

bill_id----------bill_date

1943336232      12/03/15
?


我尝试添加忽略空值,但我总是得到两行,请帮助,谢谢


PS:两行显然具有相同的帐户ID

您可以在
ORDER BY
子句中指定
NULLS LAST
选项

select
  FIRST_VALUE(BILL_ID) OVER(PARTITION BY ACCOUNT_ID ORDER BY BILL_DT DESC NULLS LAST) bill_id,
  FIRST_VALUE(BILL_DATE) OVER(PARTITION BY ACCOUNT_ID ORDER BY BILL_DT DESC NULLS LAST) bill_date
...

BILLS表中的BILL_ID怎么可能为空?GolezTrol,不是,我简化了查询,它是一个左joinOracle does support子句的结果。我尝试添加IGNORE NULLS,但我总是得到这两行。我对您的最终查询很好奇,因为阅读您的规格、添加、注释和接受的答案,我想你可能已经为自己写了一个非常复杂的内部连接。非常感谢你,尔坎:()()()())()))