sql_context.sql("CREATE function newF as 'f' USING JAR 'udf.jar'")
我需要修改它以仅返回每个不同test_id的最新日期行。 但我不能使用MAX(),因为注释和测试是数据类型文本
答案 0 :(得分:1)
您可以在内部查询中使用 row_number 来解决您的问题。 但是,如果有多个行具有相同的id时间戳,则只返回一行。
select
time_stamp,result,note,test
from
(
SELECT
results.time_stamp,
results.result,
results.note,
tests.test,
rn=row__number() over( partition by results.test_id order by results.time_stamp desc)
FROM results
INNER JOIN tests
ON results.test_id = tests.id
)
where rn=1
答案 1 :(得分:1)
为什么不使用subquery
代替:
select r.*
from results r
where date = (select top 1 date
from tests t
where t.id = r.test_id
order by date desc
);
如果您想从两个表中返回数据,那么您可以执行JOIN
&改为使用row_number()
函数:
select top 1 with ties r.*, t.test
from results r inner join
tests t
on t.id = r.test_id
order by row_number() over (partition by r.test_id order by r.date desc);
答案 2 :(得分:1)
这是一个交叉应用答案:
SELECT
results.time_stamp,
results.result,
results.note,
tests.test
FROM results
CROSS APPLY
(
select top 1 *
from tests t
where t.id = results.test_id
order by date desc
) tests