nth_value not available in rows prior to <offset>
-------------------------------------------------
Key: CORE-4405
URL: http://tracker.firebirdsql.org/browse/CORE-4405
Project: Firebird Core
Issue Type: Bug
Components: Engine
Affects Versions: 3.0 Alpha 2
Environment: Win7 64
Reporter: Volker Rehn
nth_value provides absolute addressing of rows in an ordered dataset, lag/lead
provide relative addressing. These functions can be used to perform simple
spreadsheet-like operations:
select row, salary,
nth_value(salary, 10) over (order by row) nth10,
nth_value(salary, 20) over (order by row) nth20,
case
when row = 15 then 'salary(row 15) + salary(row 20)'
when row = 25 then 'salary(row 25) + salary(row 10)'
else null
end formula,
case
when row = 15 then salary + nth_value(salary, 20) over (order by row)
-- when row = 15 then salary + lead(salary, 5) over (order by row)
when row = 25 then salary + nth_value(salary, 10) over (order by row)
else null
end result
from (
select row_number() over (order by e.emp_no) row, e.salary
from employee e
The result of row 25 is correct, but the result of row 15 is wrong (null),
because nth_value(salary, 20) is not available here.
There is a note in the docs:
"FIRST_VALUE, LAST_VALUE and NTH_VALUE also operate on a window frame.
Currently, Firebird al-
ways frames from the first to the current row of the partition, not to the
last. This is likely to produce strange
results for NTH_VALUE and especially LAST_VALUE"
Does that mean nth_value won't be fixed in Firebird 3.0? For workarounds, one
can use lag/lead, but that gives messy code if cell arithmetics are more
complex.
Best regards, Volker
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel