Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как написать select  [new]
startDBA
Member

Откуда:
Сообщений: 174
ПРИВЕТ всемь

нужна помошь в написании селеКта...
допустим есть таблица в каторой 100 строк....возможно ли вывести в селекте 1,25,75 и 100 строку?

зарание благадарен!
2 сен 12, 15:25    [13101322]     Ответить | Цитировать Сообщить модератору
 Re: как написать select  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
startDBA,

ROW_NUMBER()
2 сен 12, 15:55    [13101420]     Ответить | Цитировать Сообщить модератору
 Re: как написать select  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: как написать select  [new]
Владимир Затуливетер
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]     Ответить | Цитировать Сообщить модератору
 Re: как написать select  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: как написать select  [new]
iap
Member

Откуда: Москва
Сообщений: 47049
user89
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:28    [13103266]     Ответить | Цитировать Сообщить модератору
 Re: как написать select  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: как написать select  [new]
startDBA
Member

Откуда:
Сообщений: 174
user89,

Спасибо всем!.....тут оказалась маленькая проблемка...
таблица на каторую надо зделать with там 405М строк.....
и order by надо делать по 4 строкам....выходит так всю это лабуду нужно будет поднять в память?...
3 сен 12, 14:54    [13106137]     Ответить | Цитировать Сообщить модератору
 Re: как написать select  [new]
Читатель неместный
Guest
ну тут одно из трех
- либо вам нужно не row_number() ...на 400млн то строк
- либо этот row_number() уже держать в таблице
3 сен 12, 15:13    [13106323]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить