|
v7: Помогите с SQL | ☑ | ||
---|---|---|---|---|
0
pofigos
07.08.12
✎
18:07
|
Всех приветствую. Прошу помощи в создании запроса.
Есть такой запрос: SELECT NullIf(Cast(Left(Реализация.DATE_TIME_IDDOC, 8) AS datetime), '17530101') Документ_дата , Реализация.IDDOCDEF [Документ_вид $ВидДокументаПредставление] , $Реализация.Накладная [Накладная $Справочник.Документы] , $Реализация.Товар [Товар $Справочник.ВидыТоваров] , $Реализация.Признак [Признак $Справочник.ТипыОпераций] , Sum($Реализация.Количество) СуммаКоличество FROM $Регистр.Реализация AS Реализация With (NOLOCK) WHERE (Cast(Left(Реализация.DATE_TIME_IDDOC, 8) AS datetime) >= :НачДата) AND (Cast(Left(Реализация.DATE_TIME_IDDOC, 8) AS datetime) <= :КонДата) AND ($Реализация.Товар IN (SELECT Val FROM #ГруппаТов)) GROUP BY Реализация.IDDOCDEF , Cast(Left(Реализация.DATE_TIME_IDDOC, 8) AS datetime) , $Реализация.Накладная , $Реализация.Товар , $Реализация.Признак ORDER BY Cast(Left(Реализация.DATE_TIME_IDDOC, 8) AS datetime) , $Реализация.Накладная , $Реализация.Товар , $Реализация.Признак По регистру нет поля МОЛ, который указывается по документу. Каким образом можно напрямую в запросе установить выборку по этому полю? Помогите советом, примером и что лучше всего конечно, часть кода под этот запрос.. не могу понять что к чему :( Если брать в общем, тыкните куда следуют (на будущее так сказать) Спасибо. |
|||
1
Ёпрст
07.08.12
✎
18:14
|
разве что присоединять все типы документов, которые могут толкать этот регистр и брать через coalesce реквизит из шапки/тч дока
|
|||
2
pofigos
07.08.12
✎
18:44
|
(1) Можно подробнее про coalesce. Вернее как правильно присоединить. Есть 4 типа документа, двигающие регистр.
|
|||
3
pofigos
07.08.12
✎
18:45
|
(2) Забыл Вид документа определяю сразу в запросе, и на сколько понимаю, можно сразу передавать в условие при соединении, так?
|
|||
4
ADirks
08.08.12
✎
07:50
|
Кстати, можно чуть по-другому (без coalesce). Часто так делаю, когда надо несколько реквизитов из нескольких видов документов получать.
left join ( select IDDoc, МОЛ from $Документ.Вид1 union all select IDDoc, МОЛ from $Документ.Вид2 union all select IDDoc, МОЛ from $Документ.ВидN ) Док on Док.IDDoc = Реализация.IDDoc |
|||
5
Ёпрст
08.08.12
✎
09:03
|
(4) да, через юнион побыстрее будет
|
|||
6
ADirks
08.08.12
✎
12:10
|
Не, быстрее врядли будет - в итоге планы запросов скорее всего будут идентичны. Просто мне так больше нравится.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |