Продолжение истории.
Вот этот текст запроса тоже не отрабатывает
Табуляцию я убрал из текста, вместо него только пробелы. И глюк опять плавающий.
Текст запроса генерируется, я его ещё буду править (сейчас генерируется лишний вложенный запрос), но запрос рабочий.
Вот текст оригинального запроса
Set NoCount On
IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE
ID=OBJECT_ID('tempdb..#ВремОстатки') AND sysstat & 0xf = 3 )
DROP TABLE #ВремОстатки
SELECT CAST('20130501' as DateTime) as Период
, ОстаткиТМЦ.Номенклатура AS Номенклатура
, ОстаткиТМЦ.КоличествоКонечныйОстаток as Остаток
Into #ВремОстатки
From $РегистрОстаткиОбороты.ОстаткиТМЦ('20130501','20130508Z',Период,,,(Номенклатура = ' G7N '),(Номенклатура),(Количество)) as ОстаткиТМЦ
WHERE ОстаткиТМЦ.КоличествоКонечныйОстаток <> 0
SELECT ПартииНаличие.Период as Период
, ПартииНаличие.Номенклатура [Номенклатура $Справочник.Номенклатура]
, Sum(ПартииНаличие.Остаток) as Остаток
FROM (
SELECT CASE WHEN CAST('20130501' as DateTime)<'20130501' THEN '20130501' ELSE CAST('20130501' as DateTime) END as Период
, Рег.Номенклатура
, Рег.Остаток as Остаток
FROM (
SELECT кросс.День as Период
, кросс.Номенклатура AS Номенклатура
, Ост.Остаток AS Остаток
From (Select DISTINCT дни.dateE as День
, Остатки.Номенклатура AS Номенклатура
From #tmp_dates as Дни
CROSS JOIN #ВремОстатки as Остатки
) as Кросс
LEFT JOIN (Select об1.Период as ДатаС
, MIN(CASE WHEN об2.Период Is NULL THEN DATEADD(day,1,CAST('20130508' as DateTime)) ELSE DATEADD(day,-1,об2.Период) END) as ДатаПо
, об1.Остаток as Остаток
, об1.Номенклатура AS Номенклатура
From #ВремОстатки об1
LEFT JOIN #ВремОстатки об2 on об1.Период < об2.Период
Group By об1.Период,об1.Остаток,об1.Номенклатура
) as Ост on кросс.день BETWEEN Ост.ДатаС AND Ост.ДатаПо AND кросс.Номенклатура = Ост.Номенклатура
Where Ост.Остаток <> 0
) as Рег
) as ПартииНаличие
GROUP BY ПартииНаличие.Период,ПартииНаличие.Номенклатура
ORDER BY 1
глРС.ВыполнитьИнструкцию(ТекстЗапроса,ИТЗ);
{\\TSCLIENT\E\1С\АНАЛИЗ ТМЦ ПО ПЕРИОДАМ.ERT(477)}: State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'Номенклатура'.
Вот он при отладке
Set NoCount On
IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE
ID=OBJECT_ID('tempdb..#ВремОстатки') AND sysstat & 0xf = 3 )
DROP TABLE #ВремОстатки
SELECT CAST('20130501' as DateTime) as Период
, ОстаткиТМЦ.Номенклатура AS Номенклатура
, ОстаткиТМЦ.КоличествоКонечныйОстаток as Остаток
Into #ВремОстатки
From (
select
rb2412_vt.Номенклатура,
sum(rb2412_vt.КоличествоОстаток) as КоличествоНачальныйОстаток,
sum(rb2412_vt.КоличествоПриход) as КоличествоПриход,
sum(rb2412_vt.КоличествоРасход) as КоличествоРасход,
sum(rb2412_vt.КоличествоОстаток) + sum(rb2412_vt.КоличествоПриход) - sum(rb2412_vt.КоличествоРасход) as КоличествоКонечныйОстаток
from (
select
ra2412_vt.sp2406 as Номенклатура,
case when ra2412_vt.debkred = 0 then ra2412_vt.sp2410 else 0 end as КоличествоПриход,
case when ra2412_vt.debkred = 1 then ra2412_vt.sp2410 else 0 end as КоличествоРасход,
0 as КоличествоОстаток
from ra2412 as ra2412_vt (nolock)
inner join _1sjourn as j2412_vt (nolock) on j2412_vt.iddoc = ra2412_vt.iddoc
where j2412_vt.date_time_iddoc > '20130501' and j2412_vt.date_time_iddoc < '20130508AHX3Y8 2PNWY 0'
and j2412_vt.rf2412 = 0x1
and ((ra2412_vt.sp2406 = ' G7N '))
union all
select
rg2412_vt.sp2406 as Номенклатура,
0,
0,
rg2412_vt.sp2410
from rg2412 as rg2412_vt (nolock)
where rg2412_vt.period={d '2013-04-01'}
and ((rg2412_vt.sp2406 = ' G7N '))
) as rb2412_vt
group by
rb2412_vt.Номенклатура
having
sum(rb2412_vt.КоличествоОстаток) <> 0 or
sum(rb2412_vt.КоличествоПриход) <> 0 or
sum(rb2412_vt.КоличествоРасход) <> 0 or
sum(rb2412_vt.КоличествоОстаток) + sum(rb2412_vt.КоличествоПриход) - sum(rb2412_vt.КоличествоРасход) <> 0
) as ОстаткиТМЦ
WHERE ОстаткиТМЦ.КоличествоКонечныйОстаток <> 0
SELECT ПартииНаличие.Период as Период
, ПартииНаличие.Номенклатура [Номенклатура $Справочник.Номенклатура]
, Sum(ПартииНаличие.Остаток) as Остаток
FROM (
SELECT CASE WHEN CAST('20130501' as DateTime)<'20130501' THEN '20130501' ELSE CAST('20130501' as DateTime) END as Период
, Рег.Номенклатура
, Рег.Остаток as Остаток
FROM (
SELECT кросс.День as Период
, кросс.Номенклатура AS Номенклатура
, Ост.Остаток AS Остаток
From (Select DISTINCT дни.dateE as День
, Остатки.Номенклатура AS Номенклатура
From #tmp_dates as Дни
CROSS JOIN #ВремОстатки as Остатки
) as Кросс
LEFT JOIN (Select об1.Период as ДатаС
, MIN(CASE WHEN об2.Период Is NULL THEN DATEADD(day,1,CAST('20130508' as DateTime)) ELSE DATEADD(day,-1,об2.Период) END) as ДатаПо
, об1.Остаток as Остаток
, об1.Номенклатура AS Номенклатура
From #ВремОстатки об1
LEFT JOIN #ВремОстатки об2 on об1.Период < об2.Период
Group By об1.Период,об1.Остаток,об1.Номенклатура
) as Ост on кросс.день BETWEEN Ост.ДатаС AND Ост.ДатаПо AND кросс.Номенклатура = Ост.Номенклатура
Where Ост.Остаток <> 0
) as Рег
) as ПартииНаличие
GROUP BY ПартииНаличие.Период,ПартииНаличие.Номенклатура
ORDER BY 1
глРС.ВыполнитьИнструкцию(ТекстЗапроса,ИТЗ);
{\\TSCLIENT\E\1С\АНАЛИЗ ТМЦ ПО ПЕРИОДАМ.ERT(477)}: State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'Номенклатура'.