db2 对表执行SQL查询时出现的问题,该表的所有列都返回唯一列值

mbzjlibv  于 2022-11-23  发布在  DB2
关注(0)|答案(1)|浏览(173)

假设我有一个表MyTable,其中包含DriverNum、DriverName、Comment、DateComment、AccNum列,并且MyTable有3条记录,DriverNum值分别为1、2、2。
数据库为IBMDB 2。
我可以用下面的SQL查询得到DriverNum值为1和2的唯一结果。(1)

SELECT DISTINCT DriverNum 
FROM MyTable 
WHERE AccNum = '12345' AND DateComment = 'SomeDate'

当我尝试将下面的SQL查询(2)应用于(1)的查询结果时,它应该按DateComment时间戳排序,但我不知道如何执行JOIN SQL

select *
from MyTable
WHERE AccNum = '12345' AND DriverNum =?
ORDER BY DateComment DESC
FETCH FIRST ROW ONLY

或者,我可以从(1)中运行query_result_1的java代码,并从(2)中应用sql查询,得到如下结果。
对于(整数lDrvNum:query_result_1){从我的表中选择 *,其中帐户编号= '12345'且驱动程序编号= lDrvNum按日期排序注解说明仅获取第一行}
我想知道我是否可以将(1)和(2)中的查询合并成一个查询来实现我的黄金?请帮助我,因为我被困在这个问题上了。
谢谢你的帮助,对不起,我不擅长SQL语言。肯尼

4zcjmb1e

4zcjmb1e1#

您可以使用ROW_NUMBER()函数,根据特定顺序从每个子群组取得第一列。
例如:

select *
from (
  select t.*,
    row_number() over(
      partition by drivernum    -- this separates the subgroups
      order by datecomment desc -- this defines which one is the first row
    ) as rn
  from MyTable t
  WHERE AccNum = '12345' AND DateComment = 'SomeDate'
) x
where rn = 1

相关问题