|
v7: Недопустимое имя столбца | ☑ | ||
---|---|---|---|---|
0
GandolF
16.05.13
✎
17:15
|
Такая проблема.Соединил два select-a union-ом по 2-м документам, в конце стоит ORDER BY. Типы и даже названия этих документов идентичны (хотя в dd-шнике имеют разные обозначения)
Выдает ошибку:Недопустимое имя столбца "sp5820". Хотя sp5820 является реквизитом документа во 2-м select-е. Подскажите куда копать? версия 1cpp 3.2.4., SQL 2008 |
|||
1
ДенисЧ
16.05.13
✎
17:17
|
А в первом как называется? Вот по нему и сортируй
|
|||
2
ЧеловекДуши
16.05.13
✎
17:21
|
(0) Запрос покажи, как он записан с учетом метаданных.
|
|||
3
GandolF
16.05.13
✎
17:51
|
|SELECT
|CAST(:НачДата as datetime) AS Период, |$Док.ПунктРазгрузки AS [ПунктРазгрузки [Справочник.ПунктыРазгрузки], |$Док.Клиент AS [Клиент $Справочник.Клиенты], |SUM($ДокументСтроки_.Количество) AS [Количество $Число] |FROM |$Документ.РеализацияГП AS Док (NOLOCK) |INNER JOIN _1sJourn AS Жур (NOLOCK) ON (Жур.IDDoc = Док.IDDoc) AND |Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND |Жур.Closed & 1 = 1 |INNER JOIN $ДокументСтроки.РеализацияГП AS ДокументСтроки_ (NOLOCK) ON (ДокументСтроки_.IDDoc = Док.IDDoc) |WHERE |$Док.Клиент=:ВыбКлиент |UNION ALL | |SELECT |CAST(:НачДата as datetime) AS Период, |$Док.ПунктРазгрузки AS [ПунктРазгрузки $Справочник.ПунктыРазгрузки], |$Док.Клиент AS [Клиент $Справочник.Клиенты], |SUM($ДокументСтроки_.Количество) AS [Количество $Число] |FROM |$Документ.ВозвратГП AS Док (NOLOCK) | INNER JOIN _1sJourn AS Жур (NOLOCK) ON (Жур.IDDoc = Док.IDDoc) AND |Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND |Жур.Closed & 1 = 1 |INNER JOIN $ДокументСтроки.ВозвратГП AS ДокументСтроки_ (NOLOCK) ON (ДокументСтроки_.IDDoc = Док.IDDoc) |WHERE |$Док.Клиент=:ВыбКлиент |GROUP BY |Жур.Date_Time_IDDoc,$Док.Клиент,$Док.ПунктРазгрузки WITH ROLLUP |ORDER BY |Жур.Date_Time_IDDoc, |$Док.Клиент, |$Док.ПунктРазгрузки |"; Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ТЗ,0); Так вот sp5820 - это $Док.ПунктРазгрузки, но(!) для $Документ.ВозвратГП. А для $Документ.РеализацияГП должен быть SP2864, но в обоих случаях берет sp5820 и ругается, понятное дело |
|||
4
ДенисЧ
16.05.13
✎
17:52
|
(3) что-то в (1) не понятно?
|
|||
5
Ёпрст
16.05.13
✎
17:54
|
А зачем группировать второй селект и еще и сортировать его ?
|
|||
6
Ёпрст
16.05.13
✎
17:55
|
+ типизацию выкинь со второго селекта
|
|||
7
Ёпрст
16.05.13
✎
17:55
|
ну и Sum в первом селекте не нужна - нету group by
|
|||
8
GandolF
16.05.13
✎
18:06
|
Не помогло.
В обоих select-ах ставит: SELECT CAST('20130101' as datetime) AS Период, Док.sp5820 AS [ПунктРазгрузки $Справочник.ПунктыРазгрузки], Док.sp2510 AS [Клиент $Справочник.Клиенты] ... а должно быть: SELECT CAST('20130101' as datetime) AS Период, Док.sp2864 AS [ПунктРазгрузки $Справочник.ПунктыРазгрузки], Док.SP1830AS [Клиент $Справочник.Клиенты] .......... SELECT CAST('20130101' as datetime) AS Период, Док.sp5820 AS [ПунктРазгрузки $Справочник.ПунктыРазгрузки], Док.sp2510 AS [Клиент $Справочник.Клиенты] та же хрень и с Клиентом будет. Знать бы что не так |
|||
9
Ёпрст
16.05.13
✎
18:08
|
1. указывай разные алиясы для юнионов
2. типизируй только первый селект 3. если че, твой group by будет только на последний селект, либо группируй каждый, либо оборачивай все юнионы в подзапрос 4.наслаждайся |
|||
10
GandolF
17.05.13
✎
09:34
|
Спасибо, всё работает!
Наслаждаюсь))) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |