Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
startDBA Member Откуда: Сообщений: 174 |
ПРИВЕТ всемь нужна помошь в написании селеКта... допустим есть таблица в каторой 100 строк....возможно ли вывести в селекте 1,25,75 и 100 строку? зарание благадарен! |
2 сен 12, 15:25 [13101322] Ответить | Цитировать Сообщить модератору |
Ken@t Member Откуда: 大地 Сообщений: 3264 |
startDBA, ROW_NUMBER() |
2 сен 12, 15:55 [13101420] Ответить | Цитировать Сообщить модератору |
startDBA Member Откуда: Сообщений: 174 |
Ken@t, вот такое написал....вроде рабпотает.....может кто нибуть посоветует что по умней:) DECLARE @25 int, @50 int, @75 int SELECT @25=count(*)/(4), @50=count(*)/2, @75=(count(*)/4)*3 FROM test WITH test_new AS ( SELECT [case_num],ROW_NUMBER() OVER(ORDER BY [case_num]) AS RowNumber FROM test ) SELECT [case_num], RowNumber FROM test_new WHERE RowNumber in (@25,@50,@75) |
2 сен 12, 16:32 [13101501] Ответить | Цитировать Сообщить модератору |
Владимир Затуливетер Member Откуда: Сообщений: 427 |
startDBA, вот тут примеры постраничной выборки, думаю даст вам пару идей. http://arbinada.com/main/node/463 и еще если у вас sql server 2012 http://msdn.microsoft.com/en-us/library/ms188385.aspx несколько примеров отуда USE AdventureWorks2012; GO -- Return all rows sorted by the column DepartmentID. SELECT DepartmentID, Name, GroupName FROM HumanResources.Department ORDER BY DepartmentID; -- Skip the first 5 rows from the sorted result set and return all remaining rows. SELECT DepartmentID, Name, GroupName FROM HumanResources.Department ORDER BY DepartmentID OFFSET 5 ROWS; -- Skip 0 rows and return only the first 10 rows from the sorted result set. SELECT DepartmentID, Name, GroupName FROM HumanResources.Department ORDER BY DepartmentID OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY; -- Specifying variables for OFFSET and FETCH values DECLARE @StartingRowNumber tinyint = 1 , @FetchRows tinyint = 8; SELECT DepartmentID, Name, GroupName FROM HumanResources.Department ORDER BY DepartmentID ASC OFFSET @StartingRowNumber ROWS FETCH NEXT @FetchRows ROWS ONLY; |
2 сен 12, 21:22 [13102405] Ответить | Цитировать Сообщить модератору |
user89 Member Откуда: Сообщений: 2083 |
startDBA, ??? declare @t table (val varchar(8)) insert @t select top 100 left(newid(),8) from sys.objects a1, sys.objects a2 ;with a as ( select val, row_number() over(order by val) [rn] from @t ) select * from a where rn%25 = 0 |
3 сен 12, 09:12 [13103220] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47049 |
|
||
3 сен 12, 09:28 [13103266] Ответить | Цитировать Сообщить модератору |
user89 Member Откуда: Сообщений: 2083 |
iap, да, чего-то 1-ю строку забыл... ;with a as ( select val, row_number() over(order by val) [rn] from @t ) select * from a where (rn = 1) or (rn%25 = 0) |
3 сен 12, 10:17 [13103494] Ответить | Цитировать Сообщить модератору |
startDBA Member Откуда: Сообщений: 174 |
user89, Спасибо всем!.....тут оказалась маленькая проблемка... таблица на каторую надо зделать with там 405М строк..... и order by надо делать по 4 строкам....выходит так всю это лабуду нужно будет поднять в память?... |
3 сен 12, 14:54 [13106137] Ответить | Цитировать Сообщить модератору |
Читатель неместный
Guest |
ну тут одно из трех - либо вам нужно не row_number() ...на 400млн то строк - либо этот row_number() уже держать в таблице |
3 сен 12, 15:13 [13106323] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |