Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Недопустимое имя столбца (число прочтений - 865 )
OnePrg
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 66
Зарегистрирован: 07. Октября 2019
Недопустимое имя столбца
14. Мая 2020 :: 05:33
Печать  
Помогите пожалуйста отладить запрос

Код (C++)
Выбрать все
SELECT            
	     Т.ГруппаДляАнализа as ГруппаДляАнализа,
	     Т.НаименованиеДляАнализа as НаименованиеДляАнализа,
	     Т.Период as Период,
	     Т.Склад as Склад,
	     SUM(Т.Сумма) as Сумма,
	     SUM(Т.СуммаУчетная) as СуммаУчетная

	FROM (SELECT            
	     $сТовар.ГруппаДляАнализа as ГруппаДляАнализа,
	     $сТовар.НаименованиеДляАнализа as НаименованиеДляАнализа,
	     Реал.Период as Период,
	     сМестаХранения.ParentID as [Склад $Справочник.МестаХранения],
	     Реал.СуммаОборот as Сумма,
	     Реал.СуммаУчетнаяОборот as СуммаУчетная
	FROM
	     $РегистрОбороты.Реализация(:ВыбНачПериода,:ВыбКонПериода,Месяц, , ,(Товар,МестоХранения,Контрагент),(Сумма,СуммаУчетная)) AS Реал
	LEFT JOIN
	     $Справочник.Товар as сТовар
	     ON сТовар.ID = Реал.Товар
	LEFT JOIN
	     $Справочник.МестаХранения as сМестаХранения
	     ON сМестаХранения.ID = Реал.МестоХранения
	LEFT JOIN
	     $Справочник.ВидыТоваров as cВидыТоваров
	     ON cВидыТоваров.ID = $сТовар.ВидТовара
	WHERE
	     $cВидыТоваров.Услуга = 1

	UNION ALL
	      
    SELECT
        $ДокС.Товар.ГруппаДляАнализа as ГруппаДляАнализа,
        $ДокС.Товар.НаименованиеДляАнализа as НаименованиеДляАнализа,
        CAST(LEFT(Жур.Date_Time_IDDoc,6)+'01'  as Date) as Период,
	     сМестаХранения.ParentID as [Склад $Справочник.МестаХранения],
        $ДокС.СуммаРеализ as СуммаРеализ,
        $ДокС.СуммаУчетная as СуммаУчетная
    FROM
        $ДокументСтроки.ОказаниеУслуг as ДокС
    INNER JOIN
        $Документ.ОказаниеУслуг as Док ON Док.IDDoc = ДокС.IDDoc
    INNER JOIN
        _1SJourn as Жур ON Жур.IDDoc = ДокС.IDDoc
                       AND Жур.Date_Time_IDDoc BETWEEN :ВыбНачПериода AND :ВыбКонПериода
                       AND Жур.Closed & 1 = 1
	LEFT JOIN
	     $Справочник.Товар as сТовар
	     ON сТовар.ID = $ДокС.Товар
	LEFT JOIN
	     $Справочник.МестаХранения as сМестаХранения
	     ON сМестаХранения.ID = $Док.МестоХранения) as Т
	GROUP BY                     
	     Т.ГруппаДляАнализа,    
	     Т.НаименованиеДляАнализа,
	     Т.Период,
	     Т.Склад
 



Код (C++)
Выбрать все
SELECT            
     Т.ГруппаДляАнализа as ГруппаДляАнализа,
     Т.НаименованиеДляАнализа as НаименованиеДляАнализа,
     Т.Период as Период,
     Т.Склад as Склад,
     SUM(Т.Сумма) as Сумма,
     SUM(Т.СуммаУчетная) as СуммаУчетная

FROM (SELECT            
     сТовар.sp3257 as ГруппаДляАнализа,
     сТовар.sp3258 as НаименованиеДляАнализа,
     Реал.Период as Период,
     сМестаХранения.ParentID as [Склад $Справочник.МестаХранения],
     Реал.СуммаОборот as Сумма,
     Реал.СуммаУчетнаяОборот as СуммаУчетная
FROM
     (
select
rt2447_vt.Товар,
rt2447_vt.МестоХранения,
rt2447_vt.Контрагент,
rt2447_vt.Период,
sum(rt2447_vt.Сумма) as СуммаОборот,
sum(rt2447_vt.СуммаУчетная) as СуммаУчетнаяОборот
from (
select
rg2447_vt.sp2449 as Товар,
rg2447_vt.sp2451 as МестоХранения,
rg2447_vt.sp2450 as Контрагент,
dateadd(m, month(rg2447_vt.period) - 1, dateadd(yy, year(rg2447_vt.period) - 2000, {d '2000-01-01'})) as Период,
rg2447_vt.sp2454 as Сумма,
rg2447_vt.sp2457 as СуммаУчетная
from rg2447 as rg2447_vt (nolock)
where rg2447_vt.period = {d '2020-03-01'}
union all
select
ra2447_vt.sp2449,
ra2447_vt.sp2451,
ra2447_vt.sp2450,
cast(left(ra2447_vt.date_time_iddoc, 6) + '01' as datetime),
ra2447_vt.sp2454,
ra2447_vt.sp2457
from ra2447 as ra2447_vt (nolock)
where ra2447_vt.date_time_iddoc > '20200401' and ra2447_vt.date_time_iddoc < '20200430'
) as rt2447_vt
group by
rt2447_vt.Товар,
rt2447_vt.МестоХранения,
rt2447_vt.Контрагент,
rt2447_vt.Период
having
sum(rt2447_vt.Сумма) <> 0 or
sum(rt2447_vt.СуммаУчетная) <> 0
) as Реал
LEFT JOIN
     sc77 as сТовар
     ON сТовар.ID = Реал.Товар
LEFT JOIN
     sc32 as сМестаХранения
     ON сМестаХранения.ID = Реал.МестоХранения
LEFT JOIN
     sc2206 as cВидыТоваров
     ON cВидыТоваров.ID = сТовар.sp2210
WHERE
     cВидыТоваров.sp2351 = 1

UNION ALL
      
SELECT
    ДокС.sp464.ГруппаДляАнализа as ГруппаДляАнализа,
    ДокС.sp464.НаименованиеДляАнализа as НаименованиеДляАнализа,
    CAST(LEFT(Жур.Date_Time_IDDoc,6)+'01'  as Date) as Период,
     сМестаХранения.ParentID as [Склад $Справочник.МестаХранения],
    ДокС.sp2675 as СуммаРеализ,
    ДокС.sp2674 as СуммаУчетная
FROM
    dt458 as ДокС
INNER JOIN
    dh458 as Док ON Док.IDDoc = ДокС.IDDoc
INNER JOIN
    _1SJourn as Жур ON Жур.IDDoc = ДокС.IDDoc
                   AND Жур.Date_Time_IDDoc BETWEEN '20200301' AND '20200430'
                   AND Жур.Closed & 1 = 1
LEFT JOIN
     sc77 as сТовар
     ON сТовар.ID = ДокС.sp464
LEFT JOIN
     sc32 as сМестаХранения
     ON сМестаХранения.ID = Док.sp2673) as Т
GROUP BY                     
     Т.ГруппаДляАнализа,    
     Т.НаименованиеДляАнализа,
     Т.Период,
     Т.Склад 



Ругается Недопустимое имя столбца "Склад".
  
Наверх
 
IP записан
 
OnePrg
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 66
Зарегистрирован: 07. Октября 2019
Re: Недопустимое имя столбца
Ответ #1 - 14. Мая 2020 :: 07:07
Печать  
Попробовал отладить запрос по частям

Код (C++)
Выбрать все
SELECT
     Т.ГруппаДляАнализа as ГруппаДляАнализа,
     Т.НаименованиеДляАнализа as НаименованиеДляАнализа,
     Т.Период as Период,
     Т.Склад as Склад,
     SUM(Т.Сумма) as Сумма,
     SUM(Т.СуммаУчетная) as СуммаУчетная

FROM
(SELECT
    сТовар.sp3257 as ГруппаДляАнализа,
    сТовар.sp3258 as НаименованиеДляАнализа,
    CAST(LEFT(Жур.Date_Time_IDDoc,6)+'01'  as Date) as Период,
     сМестаХранения.ParentID as [Склад $Справочник.МестаХранения],
    ДокС.sp2675 as СуммаРеализ,
    ДокС.sp2674 as СуммаУчетная
FROM
    dt458 as ДокС
INNER JOIN
    dh458 as Док ON Док.IDDoc = ДокС.IDDoc
INNER JOIN
    _1SJourn as Жур ON Жур.IDDoc = ДокС.IDDoc
                   AND Жур.Date_Time_IDDoc BETWEEN '20200301' AND '20200430'
                   AND Жур.Closed & 1 = 1
LEFT JOIN
     sc77 as сТовар
     ON сТовар.ID = ДокС.sp464
LEFT JOIN
     sc32 as сМестаХранения
     ON сМестаХранения.ID = Док.sp2673) as T
GROUP BY
     Т.ГруппаДляАнализа,
     Т.НаименованиеДляАнализа,
     Т.Период,
     Т.Склад 



Теперь ругается на другое Не удалось привязать составной идентификатор "Т.ГруппаДляАнализа"
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1532
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Недопустимое имя столбца
Ответ #2 - 14. Мая 2020 :: 07:26
Печать  
Типизация возможна только во внешнем запросе. Во вложенных она не имеет смысла.
Вот это
сМестаХранения.ParentID as [Склад $Справочник.МестаХранения],
надо заменить на
сМестаХранения.ParentID as Склад,
  

FormEx developer
Наверх
www  
IP записан
 
OnePrg
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 66
Зарегистрирован: 07. Октября 2019
Re: Недопустимое имя столбца
Ответ #3 - 14. Мая 2020 :: 07:39
Печать  
Спасибо, друг - заработало. Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать