Как выполнить многократный SQL в скрипте QlikView?

У меня есть запрос MS-SQL с использованием временной таблицы, из которой я хотел бы получить данные в QlikView:

declare @oi_im table (tick datetime);

insert into @oi_im
SELECT TOP 360 dateadd(mi, datediff(mi, 0, GETDATE()) - ROW_NUMBER() OVER (ORDER BY ID), 0) as tick
FROM [Messages] timer;

SELECT tick as Created, case when msgs is NULL then 0 else msgs end as msgs
FROM (SELECT TOP 360 tick
FROM @oi_im) timer
LEFT JOIN (SELECT TOP 360 dateadd(mi, datediff(mi, 0, Created), 0) as Created, count(*) as msgs
  FROM [Messages] with(nolock)
  GROUP BY dateadd(mi, datediff(mi, 0, Created), 0)
  ORDER BY Created desc) msgslist ON msgslist.Created=timer.tick
ORDER BY timer.tick desc

Моя первая попытка состояла в том, чтобы просто скопировать этот текст в окно "Редактировать скрипт" QlickWiev, но проблема в том, что скрипт бросает операторы в SQL один за другим. После выполнения первого утверждения (создания временной таблицы) сервер MS SQL теряет контекст, а при втором утверждении выдает ошибку "Я не знаю ни одного @oi_im"

Следующая попытка - обернуть этот текст в хранимую процедуру:

SQL execute sp_executesql N'declare @oi_im table (tick datetime);


insert into @oi_im
SELECT TOP 360 dateadd(mi, datediff(mi, 0, GETDATE()) - ROW_NUMBER() OVER (ORDER BY ID), 0) as tick
FROM [Messages] timer with(nolock);


SELECT tick as Created, case when msgs is NULL then 0 else msgs end as msgs
FROM (SELECT TOP 360 tick
FROM @oi_im) timer
LEFT JOIN (SELECT TOP 360 dateadd(mi, datediff(mi, 0, Created), 0) as Created, count(*) as msgs
  FROM [Messages] with(nolock)
  GROUP BY dateadd(mi, datediff(mi, 0, Created), 0)
  ORDER BY Created desc) msgslist ON msgslist.Created=timer.tick
ORDER BY timer.tick desc
'

Он не выдает ошибок, но, к сожалению, не возвращает никаких данных.

Таким образом, вопрос заключается в следующем: как выполнить несколько операторов SQL в скрипте QlikView, в то время как первый оператор SQL не является оператором SELECT?

0 ответов

Другие вопросы по тегам