|
v7: Подскажите по SQL запросу | ☑ | ||
---|---|---|---|---|
0
МастерВопросов
19.08.11
✎
08:41
|
Ругается на справочник Номенклатуры:
{Документ.ПеремещениеТМЦ.Форма.Модуль(2024)}: State 42000, native 8120, message [Microsoft][ODBC SQL Server Driver][SQL Server]Столбец "sc84.CODE" недопустим в списке выборки, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY. Текст запроса: ТекстЗапроса = "-- qryMaker:АналогиКонтрагентов.2009.11.03.14.01.32 |SELECT | (lTrim(rTrim(CASE WHEN (ОстаткиТМЦОстатки.Фирма IN (SELECT val FROM #СписокФирм)) THEN 'Наше_' ELSE 'НеНаше_' END))+lTrim(rTrim(Номенклатура.Code))) as Индекс | , ОстаткиТМЦОстатки.Фирма AS [Фирма $Справочник.Фирмы] | , ОстаткиТМЦОстатки.Номенклатура [Номенклатура $Справочник.Номенклатура] | , Sum(ОстаткиТМЦОстатки.КоличествоОстаток) КолОст |FROM $РегистрОстатки.ОстаткиТМЦ(:ВыбДата,, | (Склад = :ВыбСклад) AND (Номенклатура IN (SELECT val FROM #СписокНоменклатуры)), | (Фирма,Номенклатура),) AS ОстаткиТМЦОстатки | INNER JOIN $Справочник.Номенклатура AS Номенклатура With (NOLOCK) ON ОстаткиТМЦОстатки.Номенклатура = Номенклатура.ID |GROUP BY | (lTrim(rTrim(CASE WHEN (ОстаткиТМЦОстатки.Фирма IN (SELECT val FROM #СписокФирм)) THEN 'Наше_' ELSE 'НеНаше_' END))+lTrim(rTrim(Номенклатура.Code))) |, ОстаткиТМЦОстатки.Фирма |, ОстаткиТМЦОстатки.Номенклатура |Having Sum(ОстаткиТМЦОстатки.КоличествоОстаток)>0 |Order By ОстаткиТМЦОстатки.Номенклатура |"; А в таком варианте работает без ошибок: ТекстЗапроса = "-- qryMaker:АналогиКонтрагентов.2009.11.03.14.01.32 |SELECT | (lTrim(rTrim('Наше_'))+lTrim(rTrim(Номенклатура.Code))) as Индекс .... |GROUP BY | (lTrim(rTrim('Наше_'))+lTrim(rTrim(Номенклатура.Code))) .... |"; |
|||
1
YHVVH
19.08.11
✎
08:44
|
попробуй через вложенный запрос
|
|||
2
Ёпрст
19.08.11
✎
08:48
|
А так ?
Select lTrim(rTrim(CASE WHEN ОстаткиТМЦОстатки.Фирма IN (SELECT val FROM #СписокФирм) THEN 'Наше_' ELSE 'НеНаше_' END)))+lTrim(rTrim(Номенклатура.Code)) as Индекс ... Group by lTrim(rTrim(CASE WHEN ОстаткиТМЦОстатки.Фирма IN (SELECT val FROM #СписокФирм) THEN 'Наше_' ELSE 'НеНаше_' END)))+lTrim(rTrim(Номенклатура.Code)) |
|||
3
Nutsiiam
19.08.11
✎
08:50
|
оборачивай получение группировочного поля в подзапрос.
|
|||
4
МастерВопросов
19.08.11
✎
09:14
|
(2) неа, таже ошибка
|
|||
5
Ёпрст
19.08.11
✎
09:24
|
(4) ну тогда, только оборачиванием всего в подзапрос пробуй.
|
|||
6
Ёпрст
19.08.11
✎
09:25
|
да..еще попробуй другой алияс задать для справочника Номенклатура, сперва.
|
|||
7
МастерВопросов
19.08.11
✎
09:28
|
так заработало:
ТекстЗапроса = "-- qryMaker:АналогиКонтрагентов.2009.11.03.14.01.32 |SELECT | (lTrim(rTrim(CASE WHEN (ОстаткиТМЦОстатки.Фирма IN (SELECT val FROM #СписокФирм)) THEN 'Наше_' ELSE 'НеНаше_' END)))+lTrim(rTrim(Номенклатура.Code)) as Индекс ... |GROUP BY | Номенклатура.Code Но чо то ссыкотно оставлять, вдруг каким боком вылезет в дальнейшем. Буду переделывать на подзапрос. |
|||
8
Ёпрст
19.08.11
✎
09:31
|
(7) а зачем тебе вообще код номенклатуры упёрся ?
Конда есть и так уникальный id у номенклатуры .. и твоё соединение со справочником нафик не упёрлось вообще. |
|||
9
МастерВопросов
19.08.11
✎
09:35
|
(8) а как я потом за пределами запроса в таблице буду искать номенклатуру по ID?
А так просто ТекстДляпоиска="НеНаше_"+СoкрЛП(Выбноменклтаруа.Код) |
|||
10
Ёпрст
19.08.11
✎
10:05
|
(9) как 2 пальца..по id.
А так, привязываться к коду, который могут изменить, который может быть не уникальным - моветон. |
|||
11
antoneus
19.08.11
✎
10:06
|
(9) через MetaDataWork хотя бы
|
|||
12
Ёпрст
19.08.11
✎
10:07
|
ЗначениеВСтрокуБД, если что..
|
|||
13
МастерВопросов
19.08.11
✎
11:44
|
(11)(12)
спасибо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |