Поиск по этому блогу

воскресенье, 12 февраля 2012 г.

row_number в Firebird

Оконная функция. Пронумеровать столбцы в запросе. Row_number()
Синтаксис для MS SQL
Select name,    row_number() over(order by name) as алиасПоля
from таблица 

Оказывается и в Firebird можно сделать подобное. Я встречала еще два способа, но больше всего мне понравилось решение  Fabiano Bonin. Красиво, элегантно и просто.
http://www.firebirdfaq.org/faq343/
Example for Dialect 3 databases:

SELECT
rdb$get_context('USER_TRANSACTION', 'row#') as row_number,
rdb$set_context('USER_TRANSACTION', 'row#',
coalesce(cast(rdb$get_context('USER_TRANSACTION', 'row#') as integer), 0) + 1),
a.rdb$relation_name
FROM rdb$relations a
ORDER BY a.rdb$relation_name

Firebird context variables can do the job for you here. Here's an interesting way to do it contributed by Fabiano Bonin. This example is showing all the tables and views in the database.

Firebird 3.0 Alpha 1. Window functions: DENSE_RANK, RANK and ROW_NUMBER

ждем с нетерпением !!!

http://tracker.firebirdsql.org/browse/CORE-2830?page=com.atlassian.jira.plugin.ext.subversion%3Asubversion-commits-tabpanel