On 10-8-2013 09:08, liviuslivius wrote:
> Hi,
>
> you do not understand me correctly
> i talking about query with over() not over(order by)
> i know that i can specify many row_number clause in one query
>
> Firebird allow this construction over(without order by) and then it should 
> numerate records in resultset sequential
> Example MSSQL disallow row_number with over(without order by)
> this is message from MSSQL
> "The function 'row_number' must have an OVER clause with ORDER BY."
>
> If Firebird allow this structure, then this two queries should always 
> numerate resultset not some internal order of records
> e.g.
> SLECT T.ID, row_number() over() FROM TEST T order by T.ID ASC <-- asc
> [ID][ROW_NUMBER]
> 1 1
> 2 2
> 3 3
> 4 4
> 5 5
>
>   SELECT T.ID, row_number() over() FROM TEST T order by T.ID DESC <-- desc
> [ID][ROW_NUMBER]
> 5 1
> 4 2
> 3 3
> 2 4
> 1 5
>
> but now Firebird return row_number like this
>
>   SELECT T.ID, row_number() over() FROM TEST T order by T.ID ASC
> [ID][ROW_NUMBER]
> 1 2
> 2 1
> 3 4
> 4 3
> 5 5
>
> this should be fixed or disallowed by Firebird like MSSQL

According to the SQL Specification (as far as I read it correctly) you 
are not entirely correct, it says SQL:2011 Foundation, 6.10 <window 
function>:

"
7) If <ntile function>, <lead or lag function>, <rank function type> or 
ROW_NUMBER is specified, then:
a) If <ntile function>, <lead or lag function>, RANK or DENSE_RANK is 
specified, then the window ordering clause WOC of WDX shall be present.
...
"

In other words, ROW_NUMBER does not require a window ordering clause. 
The specification also says that ROW_NUMBER is not deterministic. In 
other words: you should not expect any specific ordering of row_number 
if you did not specify an order by in the window and in the query itself.

However it also says (under Conformance Rules):
"
4) Without Feature T612, “Advanced OLAP operations”, conforming SQL 
language shall not contain a <window function> that simply contains 
ROW_NUMBER and immediately contains a <window name or specification> 
whose window structure descriptor does not contain a window ordering clause.
"

I am not sure how to read this though, because I believe they actually 
mean: "to implement feature T612, you must have ...".
-- 
Mark Rotteveel

------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead. 
Download for free and get started troubleshooting in minutes. 
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to