|
v7: Добавить в выборку значений из списка | ☑ | ||
---|---|---|---|---|
0
zenon46
12.12.19
✎
14:59
|
Доброго дня!
Есть Список значений с номенклатурой, получаем по каждой номенклатуре за период, документы поступления и количество из этого поступления. Проблема состоит в том что, в результат выборки нужно добавить ту номенклатуру из переданного списка по которой не было поступлений, заполнив поля пустыми значениями. Вот это собственно и не выходит текст запроса ниже: |SELECT | СпрНоменклатура.Code [Код], | t1.Номенклатура [Номенклатура $Справочник.Номенклатура], | t1.Количество Количество, | t1.ТекДок [Док $Документ.ПоступлениеТМЦ_Склад], | t1.Контрагент [Контр $Справочник.Контрагенты] |FROM |( |SELECT | Жур.IDDoc AS [ТекДок], | Жур.IDDocDef AS ТекДок_вид, | $Документ.ПоступлениеТМЦ_Склад.Контрагент AS [Контрагент], | $ДокументСтроки.ПоступлениеТМЦ_Склад.Номенклатура [Номенклатура], | $ДокументСтроки.ПоступлениеТМЦ_Склад.Количество [Количество] |FROM | _1SJourn Жур |LEFT JOIN | $Документ.ПоступлениеТМЦ_Склад AS ПоступлениеТМЦ_Склад With (NOLOCK) ON Жур.IDDOC = ПоступлениеТМЦ_Склад.IDDOC |INNER JOIN | $ДокументСтроки.ПоступлениеТМЦ_Склад AS Док ON Док.IDDoc = Жур.IDDoc |WHERE | (Жур.CLOSED&1=1) AND | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND | Жур.iddocdef=$ВидДокумента.ПоступлениеТМЦ_Склад AND | ($ДокументСтроки.ПоступлениеТМЦ_Склад.Номенклатура IN (SELECT Val FROM #TempTable)) |UNION ALL |SELECT | VAL, | VAL, | VAL, | VAL, | 0 |FROM | #TempTable |) t1 |INNER JOIN | $Справочник.Номенклатура AS СпрНоменклатура ON СпрНоменклатура.ID=t1.Номенклатура |
|||
1
Djelf
12.12.19
✎
15:13
|
Исходя из
($ДокументСтроки.ПоступлениеТМЦ_Склад.Номенклатура IN (SELECT Val FROM #TempTable)) Вот это не верно INNER JOIN $Справочник.Номенклатура AS СпрНоменклатура ON СпрНоменклатура.ID=t1.Номенклатура Что в t1.Номенклатура? descr? Ну так, тогда так INNER JOIN $Справочник.Номенклатура AS СпрНоменклатура ON СпрНоменклатура.ID=t1.Val |
|||
2
zenon46
12.12.19
✎
15:20
|
(1) Все работает как надо, без :
|UNION |SELECT | VAL, | VAL, | VAL, | VAL, | 0 |FROM | #TempTable Я пытаюсь в рельтирующую таблицу добавить ту номенклатуру из #TempTable которая не попадет в : |SELECT | Жур.IDDoc AS [ТекДок], | Жур.IDDocDef AS ТекДок_вид, | $Документ.ПоступлениеТМЦ_Склад.Контрагент AS [Контрагент], | $ДокументСтроки.ПоступлениеТМЦ_Склад.Номенклатура [Номенклатура], | $ДокументСтроки.ПоступлениеТМЦ_Склад.Количество [Количество] |FROM | _1SJourn Жур |LEFT JOIN | $Документ.ПоступлениеТМЦ_Склад AS ПоступлениеТМЦ_Склад With (NOLOCK) ON Жур.IDDOC = ПоступлениеТМЦ_Склад.IDDOC |INNER JOIN | $ДокументСтроки.ПоступлениеТМЦ_Склад AS Док ON Док.IDDoc = Жур.IDDoc |WHERE | (Жур.CLOSED&1=1) AND | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND | Жур.iddocdef=$ВидДокумента.ПоступлениеТМЦ_Склад AND | ($ДокументСтроки.ПоступлениеТМЦ_Склад.Номенклатура IN (SELECT Val FROM #TempTable)) |
|||
3
Djelf
12.12.19
✎
15:25
|
А. да. Недосмотрел слегка. Вроде должно работать...
Ну покрути отдельно UNION SELECT |
|||
4
zenon46
12.12.19
✎
15:27
|
(3) ошибки сыпятся по несовпадению типов, хотя мне не понятно, а какие типы, если в выборке нет этой записи по номенклатуре.
|
|||
5
Djelf
12.12.19
✎
15:31
|
Несовпадение типов либо потому что val,val,val это все номенклатура, а в итоговых колонках другая типизация.
Типизация $Документ.ПоступлениеТМЦ_Склад, видимо совсем не соответствует. |
|||
6
zenon46
12.12.19
✎
15:32
|
(5) да, это я уже понял, вот и прошу помочь, что вместо VAL использовать что нормально типизировать поля где будет 0 по количеству.
|
|||
7
Sserj
12.12.19
✎
15:32
|
|UNION ALL
|SELECT | $ПустойИД, | $ВидДокумента.ПоступлениеТМЦ_Склад, | $ПустойИД, | val, | 0 |FROM | #TempTable |
|||
8
zenon46
12.12.19
✎
15:35
|
(7) вот точно! как обычно Sserj - красавчик!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |