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

Откуда:
Сообщений: 37
Помогите создать этот запрос без временной таблицы t2

код работает, а от таблиці надо избавитса!

declare @x int
set @x=18

SELECT     Event_ID AS id,  [When],  [Numeric] as val
INTO            t2
FROM         History
WHERE     (Type = 'K' OR
                      Type = 'L') AND ([When] BETWEEN '2005-08-10 07:05:00' AND '2005-08-14 19:03:00') AND (Customer_ID = 1001)
GROUP BY Event_ID,[When],[Numeric]

select 
 case n when 1 then cast(val as varchar) when 2 then cast(nval as varchar) when 3 then '' end
from (
select n,id,val,nval from (
select id,val,(select top 1 val from t2 where id>t1.id order by id ) as nval
 from t2 t1 ) t 
 cross join (select 1 as n union select 2 ) tt
where (nval- val)>@x ) rty
order by id,n

GO
DROP TABLE t2
5 окт 05, 00:06    [1938264]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
SEP_a
Member

Откуда: КЕМЕРОВО
Сообщений: 312
XmEN
Помогите создать этот запрос без временной таблицы t2

код работает, а от таблиці надо избавитса!

declare @x int
set @x=18

SELECT     Event_ID AS id,  [When],  [Numeric] as val
INTO            t2
FROM         History
WHERE     (Type = 'K' OR
                      Type = 'L') AND ([When] BETWEEN '2005-08-10 07:05:00' AND '2005-08-14 19:03:00') AND (Customer_ID = 1001)
GROUP BY Event_ID,[When],[Numeric]

select 
 case n when 1 then cast(val as varchar) when 2 then cast(nval as varchar) when 3 then '' end
from (
select n,id,val,nval from (
select id,val,(select top 1 val from t2 where id>t1.id order by id ) as nval
 from t2 t1 ) t 
 cross join (select 1 as n union select 2 ) tt
where (nval- val)>@x ) rty
order by id,n

GO
DROP TABLE t2

Ну во первых t2 это не временная таблица а обойтись без неё попробуй так
declare @x int
DECLARE @t2 table( id......, When......., val...... )

set @x=18

SELECT Event_ID AS id, [When], [Numeric] as val
INTO @t2
FROM History
WHERE (Type = 'K' OR
Type = 'L') AND ([When] BETWEEN '2005-08-10 07:05:00' AND '2005-08-14 19:03:00') AND (Customer_ID = 1001)
GROUP BY Event_ID,[When],[Numeric]

select
case n when 1 then cast(val as varchar) when 2 then cast(nval as varchar) when 3 then '' end
from (
select n,id,val,nval from (
select id,val,(select top 1 val from @t2 where id>t1.id order by id ) as nval
from @t2 t1 ) t
cross join (select 1 as n union select 2 ) tt
where (nval- val)>@x ) rty
order by id,n

GO
5 окт 05, 05:40    [1938449]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
XmEN
Member

Откуда:
Сообщений: 37
SEP_a

А вы не подскажите что такое @t2
и SQL Query Analyzer даёт ошибки

Server: Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'table'.
Server: Msg 170, Level 15, State 1, Line 7
Line 7: Incorrect syntax near '@t2'.
Server: Msg 170, Level 15, State 1, Line 17
Line 17: Incorrect syntax near '@t2'.
Server: Msg 170, Level 15, State 1, Line 19
Line 19: Incorrect syntax near 'tt'.

таблицу я описал так :
DECLARE @t2 table( id int,  val int )
5 окт 05, 08:30    [1938564]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
XmEN
...А вы не подскажите что такое @t2
и SQL Query Analyzer даёт ошибки...
Дело в том, что в конструкции типа SELECT ... INTO ... можно применять только либо постоянные, либо временные (#, ##) таблицы. В случае использования табличных переменных следует воспользоваться явной инструкцией вставки insert into @t (...) select ...
5 окт 05, 08:37    [1938574]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
XmEN
Member

Откуда:
Сообщений: 37
tpg
XmEN
...А вы не подскажите что такое @t2
и SQL Query Analyzer даёт ошибки...
Дело в том, что в конструкции типа SELECT ... INTO ... можно применять только либо постоянные, либо временные (#, ##) таблицы. В случае использования табличных переменных следует воспользоваться явной инструкцией вставки insert into @t (...) select ...


Сделал ВОТ ТАК
declare @x int
set @x=18

insert INTO @t2( id int,  val int )
SELECT Event_ID AS id, [Numeric] as val
FROM History
WHERE (Type = 'K' OR
Type = 'L') AND ([When] BETWEEN '2005-08-10 07:05:00' AND '2005-08-14 19:03:00') AND (Customer_ID = 1001)
GROUP BY Event_ID,[When],[Numeric]

select 
case n when 1 then cast(val as varchar) when 2 then cast(nval as varchar) when 3 then '' end
from (
select n,id,val,nval from (
select id,val,(select top 1 val from @t2 where id>t1.id order by id ) as nval
from @t2 t1 ) t 
cross join (select 1 as n union select 2 ) tt
where (nval- val)>@x ) rty
order by id,n

GO

Выдаёт ошибки
Server: Msg 170, Level 15, State 1, Line 4
Line 4: Incorrect syntax near '@t2'.
Server: Msg 170, Level 15, State 1, Line 15
Line 15: Incorrect syntax near '@t2'.
Server: Msg 170, Level 15, State 1, Line 17
Line 17: Incorrect syntax near 'tt'.
Что ему не нравитса?
Помогите написать код, чтоб он работал!
Дайте примерчик если можна!
5 окт 05, 08:46    [1938589]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
XmEN
Сделал ВОТ ТАК
declare @x int
set @x=18

insert INTO @t2( id int,  val int )
SELECT Event_ID AS id, [Numeric] as val
FROM History...
Ну, а где ж декларация то табличной переменной @t2?
5 окт 05, 08:51    [1938595]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
XmEN
Member

Откуда:
Сообщений: 37
tpg
XmEN
Сделал ВОТ ТАК
declare @x int
set @x=18

insert INTO @t2( id int,  val int )
SELECT Event_ID AS id, [Numeric] as val
FROM History...
Ну, а где ж декларация то табличной переменной @t2?


Дайте Пожалуйста пример, как её правильно задекларировать, а то когда я декларирую её

declare @x int
declare @t2 table ( id int,  val int )
set @x=18

insert INTO @t2( id int,  val int )
SELECT Event_ID AS id, [Numeric] as val
FROM History
WHERE (Type = 'K' OR
Type = 'L') AND ([When] BETWEEN '2005-08-10 07:05:00' AND '2005-08-14 19:03:00') AND (Customer_ID = 1001)
GROUP BY Event_ID,[When],[Numeric]
мне выдаётса ошибка
Server: Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'table'.
5 окт 05, 08:58    [1938607]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
XmEN
tpg
XmEN
Сделал ВОТ ТАК
declare @x int
set @x=18

insert INTO @t2( id int,  val int )
SELECT Event_ID AS id, [Numeric] as val
FROM History...
Ну, а где ж декларация то табличной переменной @t2?


Дайте Пожалуйста пример, как её правильно задекларировать, а то когда я декларирую её

declare @x int
declare @t2 table ( id int,  val int )
set @x=18

insert INTO @t2( id int,  val int )
SELECT Event_ID AS id, [Numeric] as val
FROM History
WHERE (Type = 'K' OR
Type = 'L') AND ([When] BETWEEN '2005-08-10 07:05:00' AND '2005-08-14 19:03:00') AND (Customer_ID = 1001)
GROUP BY Event_ID,[When],[Numeric]
мне выдаётса ошибка
Server: Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'table'.

Что-то вы нас тут обманываете... У меня на ваш скрипт выдается:
Server: Msg 170, Level 15, State 1, Line 5
Line 5: Incorrect syntax near 'int'.
откуда следует, что у вас синтаксическая ошибка в строке:
insert INTO @t2( id int,  val int )
тут то вы зачем типы пишите? Напишите
insert INTO @t2(id, val)
5 окт 05, 09:02    [1938614]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
XmEN
Member

Откуда:
Сообщений: 37
Вот скрин шот , исправил как вы сказали, но грабли те же!
Что может быть не так?

К сообщению приложен файл. Размер - 0Kb
5 окт 05, 09:12    [1938634]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
а версия сервера у Вас какая? не в семерке ли Вы, случаем, работаете?
5 окт 05, 09:17    [1938649]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Тьфу-ты... блин... точно...
Что вернет запрос select @@version?
5 окт 05, 09:22    [1938660]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
XmEN
Member

Откуда:
Сообщений: 37
tpg
Тьфу-ты... блин... точно...
Что вернет запрос select @@version?


Я Себя щас убъю!!!!!
5 окт 05, 09:25    [1938666]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
XmEN
Member

Откуда:
Сообщений: 37
Вернул 7 :(
5 окт 05, 09:26    [1938669]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
XmEN
Вернул 7 :(
Там нет табличных переменных...
5 окт 05, 09:26    [1938670]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
XmEN
Member

Откуда:
Сообщений: 37
tpg
XmEN
Вернул 7 :(
Там нет табличных переменных...


У меня стоит Виндовс ХР Про, и до етого стоял сервер 7.
Когда я поверху устанавливал сервер 2000 , инсталлер сказал что на этот комп могут быть установлены только клиентские компоненты, а серверные не могут.

Потом я подхватил, старый сервер с базами созданый на сервере 7. А вот новый сервер с базами создать не могу.

Какой выход из ситуации?
5 окт 05, 09:40    [1938706]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
SEP_a
Member

Откуда: КЕМЕРОВО
Сообщений: 312
tpg
XmEN
...А вы не подскажите что такое @t2
и SQL Query Analyzer даёт ошибки...
Дело в том, что в конструкции типа SELECT ... INTO ... можно применять только либо постоянные, либо временные (#, ##) таблицы. В случае использования табличных переменных следует воспользоваться явной инструкцией вставки insert into @t (...) select ...

да, да...... чёт я там немножко загнула......
5 окт 05, 09:47    [1938726]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
XmEN
Потом я подхватил, старый сервер с базами созданый на сервере 7. А вот новый сервер с базами создать не могу.

Какой выход из ситуации?
Какой, какой... В BOL описано как апгрейдить семерку до 2000.
5 окт 05, 10:02    [1938796]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
XmEN
Member

Откуда:
Сообщений: 37
Вопрос встал по другому!
Могу ли я сделать мой запрос, не используя табличную переменную?
Просто я хочю его сделать через вложенные запросы!
5 окт 05, 10:20    [1938888]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
XmEN
Вопрос встал по другому!
Могу ли я сделать мой запрос, не используя табличную переменную?
Просто я хочю его сделать через вложенные запросы!
Ну, перепишите предложенное здесь - https://www.sql.ru/forum/actualthread.aspx?tid=222782#1938449 заменив @ на #, как вариант (только это уже будет использование настоящей временной таблицы, в отличие от временного использования постоянной таблицы).
5 окт 05, 10:24    [1938907]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
первое впечатление от вашего скрипта что все можно сделать гораззздо проще
не могли бы вы показать на пальцах что вы хотите и тогда возможно не будет вопросов по технологии а вам покажут простой ответ
5 окт 05, 12:19    [1939836]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
XmEN
У меня стоит Виндовс ХР Про, и до етого стоял сервер 7.
Когда я поверху устанавливал сервер 2000 , инсталлер сказал что на этот комп могут быть установлены только клиентские компоненты, а серверные не могут.

А вот это потому, что Edition не тот выбрали для установки.
Возьмите Developer Edition и все будет ОК.
5 окт 05, 12:25    [1939876]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
попробуйте что -то типа такого
select 
 case n when 1 then cast(val as varchar) when 2 then cast(nval as varchar) when 3 then '' end
from
(select 
Event_ID AS id,  
[When],  
[Numeric] as val,
(select top 1 [Numeric] 
 from History  
 where (Type = 'K'OR Type = 'L') 
   AND ([When] BETWEEN '2005-08-10 07:05:00' AND '2005-08-14 19:03:00') 
   AND (Customer_ID = 1001)
   AND [id] > h.id 
 order by id ) as nval
FROM History h
WHERE (h.Type = 'K'OR h.Type = 'L') 
  AND (h.[When] BETWEEN '2005-08-10 07:05:00' AND '2005-08-14 19:03:00') 
  AND (h.Customer_ID = 1001)) t
cross join (select 1 as n union select 2 ) tt
where nval-val>1
order by id,n

5 окт 05, 12:34    [1939945]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать запрос без временной таблицы  [new]
XmEN
Member

Откуда:
Сообщений: 37
Большое спасибо помогло!!
5 окт 05, 12:41    [1939989]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить