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

Откуда:
Сообщений: 34
Подскажите пожалуйста. Вопрос вот в чем, запросом выводится энное количество строк, как реализовать так чтобы если строк выводится допустим больше 5, то следующие строки выводились бы при помощи другого запроса (в другую таблицу)
7 авг 13, 16:32    [14676888]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2415
SS13SS13,

if (select count(1) from ...) >5
...
else
...
7 авг 13, 18:05    [14677474]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
SS13SS13
Member

Откуда:
Сообщений: 34
select p.par_udfchar02 as 'Бухгалтерский код', p.par_desc as 'ТМЦ', t.trl_qty as 'Количество'
from R5EVENTS e left join R5OBJECTS o on e.EVT_OBJECT=o.obj_code
left join R5TRANSLINES t on e.EVT_CODE=t.trl_event
left join R5PARTS p on t.TRL_PART=p.par_code
where o.OBJ_CODE='12703' and e.EVT_CLASS=N'СПИСТМЦ' and (e.EVT_DATE between '2013-01-1' and '2013-04-1')

вот имеется такой запрос он выводит 9 строк

А163 Трос для заглушки двиг. (А163) 1.000000
112 Выключатель (112) 1.000000
3875 Фильтр топлив.* (3875) 1.000000
1346а Фильтра д/импорт.техники (1346а) 1.000000
16347 Смазка WD-40 (16347) 2.000000
710 Масло моторное (710) 10.000000
3219 Герметик радиатора (3219) 3.000000
849ж Втулка (849ж) 8.000000
594д Масло гидровл. (594д) 30.000000


необходимо сначала вывести 5 строк чтобы из запихнуть в один отчет потом оставшиеся 4 строки чтобы запихнуть в другую таблицу отчета.

читал что можно использовать row_number и top (аналог функции limit, которой нет в ms sql) но у меня возникают синтаксические ошибки, подскажите как по правильному организовать
8 авг 13, 10:16    [14679481]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
Glory
Member

Откуда:
Сообщений: 104751
SS13SS13
чтобы из запихнуть в один отчет

Что такое "отчет" ?

SS13SS13
читал что можно использовать row_number и top (аналог функции limit, которой нет в ms sql) но у меня возникают синтаксические ошибки, подскажите как по правильному организовать

Изучить синтаксис сначала
8 авг 13, 10:19    [14679498]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
SS13SS13
Member

Откуда:
Сообщений: 34
что такое отчет это не важно, так как форум не про другие заморочки. Мне кажется задачу я ясно обосновал
8 авг 13, 10:22    [14679516]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
Glory
Member

Откуда:
Сообщений: 104751
SS13SS13
что такое отчет это не важно, так как форум не про другие заморочки.

Ну тогда задайте вопрос, не употребляя "неважных" слов
Если вы получили синтаксическую ошибку, то опубликуйте ее текст и текст запроса
8 авг 13, 10:24    [14679528]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
SS13SS13
Member

Откуда:
Сообщений: 34
Например
select p.par_udfchar02 as 'Бухгалтерский код', p.par_desc as 'ТМЦ', t.trl_qty as 'Количество'
from R5EVENTS e left join R5OBJECTS o on e.EVT_OBJECT=o.obj_code
left join R5TRANSLINES t on e.EVT_CODE=t.trl_event
left join R5PARTS p on t.TRL_PART=p.par_code
where o.OBJ_CODE='12703' and e.EVT_CLASS=N'СПИСТМЦ' and (e.EVT_DATE between '2013-01-1' and '2013-04-1') and ROW_NUMBER()<=5

Сообщение 1035, уровень 15, состояние 10, строка 5
Incorrect syntax near 'ROW_NUMBER', expected 'OVER'.

но это не решение проблемы потому что выведутся только одни значения

Пример 2
select p.par_udfchar02 as 'Бухгалтерский код', p.par_desc as 'ТМЦ', t.trl_qty as 'Количество'
from
R5EVENTS e left join R5OBJECTS o on e.EVT_OBJECT=o.obj_code
left join R5TRANSLINES t on e.EVT_CODE=t.trl_event
left join R5PARTS p on t.TRL_PART=p.par_code,
(
select row_number() over(order by par_udfchar02) as aaa, *
from r5parts
) q
where o.OBJ_CODE='12703' and e.EVT_CLASS=N'СПИСТМЦ' and (e.EVT_DATE between '2013-01-1' and '2013-04-1') and (aaa between 3 and 6)
group by p.par_udfchar02, p.par_desc, t.trl_qty

в данном случае какие-то либо не были значения в условии (aaa between 3 and 6) ничего не происходит



Пример 3
SELECT top 12 p.par_udfchar02 as 'Бухгалтерский код', p.par_desc as 'ТМЦ', t.trl_qty as 'Количество'
FROM R5EVENTS e left join R5OBJECTS o on e.EVT_OBJECT=o.obj_code
left join R5TRANSLINES t on e.EVT_CODE=t.trl_event
left join R5PARTS p on t.TRL_PART=p.par_code
WHERE o.OBJ_CODE='12703' and e.EVT_CLASS=N'СПИСТМЦ' and (e.EVT_DATE between '2013-01-1' and '2013-04-1') and
p.par_udfchar02 NOT IN
(
SELECT top 5 p.par_udfchar02 as 'Бухгалтерский код'
FROM r5EVENTS e left join R5OBJECTS o on e.EVT_OBJECT=o.obj_code
left join R5TRANSLINES t on e.EVT_CODE=t.trl_event
left join R5PARTS p on t.TRL_PART=p.par_code
ORDER BY p.par_udfchar02
)
ORDER BY p.par_udfchar02

вообще ничего не выводит
8 авг 13, 10:29    [14679571]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Одним запросом в две таблицы сразу записать не получится.
можно двумя запросами (но дубли первых строк тоже не попадут во вторую таблицу...):
select top(5) * into #table1 from ...
select * into #table2 from ...
EXCEPT 
select * from #table1
8 авг 13, 10:33    [14679601]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
Glory
Member

Откуда:
Сообщений: 104751
SS13SS13
Сообщение 1035, уровень 15, состояние 10, строка 5
Incorrect syntax near 'ROW_NUMBER', expected 'OVER'.

Вы синтаксис ROW_NUMBER не пробовали изучить по хелпу ?
8 авг 13, 10:35    [14679613]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
SS13SS13
Member

Откуда:
Сообщений: 34
--over(order by p.par_udfchar02)

это я пробовал, а Вы похоже только критиковать и отправлять можете, а дельного от Вас я ничего не узнал!
8 авг 13, 10:38    [14679628]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Cygapb-007
Одним запросом в две таблицы сразу записать не получится.

Имхо, там не две таблицы нужны, а две "таблицы запроса", т.е. два рекордсета.
8 авг 13, 10:40    [14679649]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
SS13SS13
Member

Откуда:
Сообщений: 34
Cygapb-007,

тоесть в первую первые 5 во вторую остальные ?
8 авг 13, 10:40    [14679650]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
Glory
Member

Откуда:
Сообщений: 104751
SS13SS13
это я пробовал,

Офигеть. Я попробовал засунуть понравившуюся мне конструкцию туда, куда счел нужным. Хелп не читал, примеры не разбирал. Какой я молодец.
А вы все критиканты, которые не могут ничего дельного посоветовать.
8 авг 13, 10:40    [14679652]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
SS13SS13
Member

Откуда:
Сообщений: 34
Гость333,


помойму вы правы )

вообщем опишу полность. Отчет в cognos report studio состоит из двух листов, на первом листе начинается таблица в ней 5 строк для значений, на втором листе оставшиеся строки, именно по этому необходимо написать запрос для вставки на первый лист 5 значений и вставки всех остальных значений на второй лист.
8 авг 13, 10:43    [14679675]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
SS13SS13
Member

Откуда:
Сообщений: 34
Glory, только ты) остальные молодцы )
8 авг 13, 10:44    [14679679]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
Glory
Member

Откуда:
Сообщений: 104751
SS13SS13
Glory, только ты) остальные молодцы )

Родной. Иди изучи хелп http://msdn.microsoft.com/ru-ru/library/ms186734(v=sql.105).aspx хотя бы до Пример Б.
8 авг 13, 10:46    [14679692]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2415
SS13SS13
вообщем опишу полность.

вам уже несколько подсказок сделали. хватит сидеть и ждать пока всё напишут за вас
.
изучите хелп ROW_NUMBER, попробуйте написать запрос, если в ПРОЦЕССЕ написания возникнут непонятки, то приводите свой запрос и задавайте вопросы.

и не забудьте оформить все согласно
https://www.sql.ru/forum/127456/rekomendacii-po-oformleniu-soobshheniy-v-forume
8 авг 13, 10:48    [14679716]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
SS13SS13
Member

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

вообщето я привел пример 3-х примеров и хотел узнать в чем ошибка и просто чтобы меня поправили, если бы вы вместо всяких ссылочек написали бы в чем ошибка и как исправить, то всем бы было лучше
8 авг 13, 10:52    [14679756]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
Glory
Member

Откуда:
Сообщений: 104751
SS13SS13
если бы вы вместо всяких ссылочек написали бы в чем ошибка

В складе ума
SS13SS13
и как исправить, то всем бы было лучше

Работать над собой
8 авг 13, 10:54    [14679767]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
SS13SS13
Member

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

ок, спасибо учитель. Пошел работать над СОБОЙ.....


ТЕМА ЗАКРЫТА
8 авг 13, 11:00    [14679825]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
SS13SS13
Гость333,


помойму вы правы )

вообщем опишу полность. Отчет в cognos report studio состоит из двух листов, на первом листе начинается таблица в ней 5 строк для значений, на втором листе оставшиеся строки, именно по этому необходимо написать запрос для вставки на первый лист 5 значений и вставки всех остальных значений на второй лист.

select  
  sign((row_number()over(order by (select 0))/6)group_field,
  *
from ...
в отчете сгруппировать по group_field: все, где group_field=0 - на первом листе, где group_field=1 - на втором
8 авг 13, 11:41    [14680124]     Ответить | Цитировать Сообщить модератору
 Re: Разделить выводимую информацию  [new]
SS13SS13
Member

Откуда:
Сообщений: 34
Cygapb-007, Благодарю
8 авг 13, 11:59    [14680266]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить