将函数内的当前行值用作常量SQL

时间:2015-08-25 15:25:51

标签: sql db2

我正在尝试运行一个查询,我必须使用当前行作为一个数据透视表。举个例子:

SELECT 
 PERSONID, 
 PERSONAGE AS CURRENTAGE, 
 MAX(CASE WHEN (CURRENTAGE-PERSONAGE) >1 THEN PERSONAGE ELSE NULL END) 
  OVER (PARTITION BY PERSONCITY) AS OldestYounger
FROM 
 PERSON;

我想知道在DB2或任何数据库中是否可以这样做,我的场景要复杂得多。我不是在寻找一种解决方法,只是将当前行用作数据透视表然后按公共属性进行分区。

我知道在这个示例中,我可以使用LAG()并按年龄顺序排序,或使用RANK()

编辑:

预期结果:

PersonID|CurrentAge|OldestYounger|City
1        22         18            York
2        25         22            York
3        30         24            Jersey
4        18         NULL          York
5        24         NULL          Jersey
6        7          NULL          Miami

当选择PersonID 2时,它应该在同一个城市找到两个年轻人,然后获得MAX()值。但是当执行CurrentAge-PersonAge时,它是同一个并且将始终返回零。我正在寻找一种方法,使该实例的CurrentAge不变,同时查看其他PersonAge。

0 个答案:

没有答案