|
v7: группировка таблицы | ☑ | ||
---|---|---|---|---|
0
yanejsh
01.11.11
✎
10:30
|
есть таблица ИндексированнаяТаблица
Подразделение Номенклатура КоличествоНоменклатуры Материал КоличествоМатериала Как из нее получить таблицу: Подразделение1 КоличествоНоменклатуры .. Номенклатура1 КоличествоНоменклатуры .. Материал1 КоличествоМатериала Материал2 КоличествоМатериала Материал3 КоличествоМатериала Если Группировать по Подразделению, Номенклатуре и Материалу -- КоличествоНоменклатуры и КоличествоМатериала, то получится что количествономенклатуры сложится у тех строк, где есть количествоМатериала, что неправильно. Если КоличествоНоменклатуры добавить в группировку столбцов, то не будет суммироваться итоги по номенклатуре и подразделению. Как же сделать надо? |
|||
1
PuhUfa
01.11.11
✎
10:33
|
как получена таблица?
|
|||
2
Ёпрст
01.11.11
✎
10:33
|
группировать по Подразделению и Номенклатуре вестимо, в последней тзПотомки будут нужные материалы..
|
|||
3
yanejsh
01.11.11
✎
10:35
|
(1) Запросом конечно
(2) сейчас пробую |
|||
4
yanejsh
01.11.11
✎
10:41
|
(2) группировать по номенклатуре, а количествономенклатуры суммируется ведь, и получается неправильное количество
|
|||
5
PuhUfa
01.11.11
✎
10:42
|
(3) сразу в запросе сгруппировать не предлагать?
|
|||
6
yanejsh
01.11.11
✎
10:44
|
(5) предложи, только запрос-то прямой и не мной писаный. если я там поставлю группировать, то разве не тоже самое будет? и как тогда обходить таблицу?
|
|||
7
yanejsh
01.11.11
✎
10:53
|
хелп ми
|
|||
8
yanejsh
01.11.11
✎
11:04
|
ап1
|
|||
9
1Сергей
01.11.11
✎
11:05
|
нафиг тут вообще таблица?
|
|||
10
yanejsh
01.11.11
✎
11:06
|
(9) а как тогда?
|
|||
11
1Сергей
01.11.11
✎
11:08
|
(10) Запросом
|
|||
12
yanejsh
01.11.11
✎
11:10
|
(11) в цикле перебирать таблицу по подразделениям и номенклатуре, и каждый раз запрос для поиска материалов? так чтоли?
|
|||
13
Mikeware
01.11.11
✎
11:14
|
(12) а что тебе надо в итоге?
|
|||
14
Ёпрст
01.11.11
✎
11:15
|
(13) получить готовый код вестимо.
:) |
|||
15
yanejsh
01.11.11
✎
11:16
|
в (0) нарисовала вроде. табличка с номенклатурой, и самый последний уровень - это информация о материалах, из которых состоит номенклатура
|
|||
16
Минона
01.11.11
✎
11:16
|
Поможет?
http://infostart.ru/public/13826/ |
|||
17
yanejsh
01.11.11
✎
11:16
|
не надо мне готовый код. я смысл не могу понять, как надо организовать это дело
|
|||
18
viktor_vv
01.11.11
✎
11:16
|
(12) Покажи пару строчек исходной таблицы, котрую группировать хочешь. У тебя походу количество выпуска номенклатуры в каждой строчке стоит.
|
|||
19
Mikeware
01.11.11
✎
11:16
|
(14) Это и так ясно... Вопрос в том, что должен выдавать готовый код....
Кмплектацию для кровати, чтоль? |
|||
20
Ёпрст
01.11.11
✎
11:17
|
(15) текст запроса покажешь, или так и будем дальше телепатировать, что тебе надо в итоге ?
|
|||
21
viktor_vv
01.11.11
✎
11:19
|
Это либо переписать прямой запрос с Таблицей выпуска номенклатуры и к ней Объединить все таблицу материалов. Либо из твоей таблицы сделать две.
|
|||
22
yanejsh
01.11.11
✎
11:19
|
(18) ну конечно в каждой строчке, как по другому то. табличка уже есть такая:
Подразделение1 Номенклатура1 КолНом=6 Материал1 колМат=5 Подразделение1 Номенклатура1 КолНом=6 Материал2 колМат=3 Подразделение1 Номенклатура1 КолНом=6 Материал3 колМат=7 Подразделение1 Номенклатура2 КолНом=9 Материал1 колМат=3 ... |
|||
23
yanejsh
01.11.11
✎
11:20
|
ТекстЗапроса = "
|SELECT Подразделения.ID [Подразделение $Справочник.Подразделения] | , Номенклатура.ID [Продукция $Справочник.Номенклатура] | , $Номенклатура.ТипНоменклатуры [ТипНоменклатуры $Перечисление.ТипыНоменклатуры] | , ВидыНоменклатуры.ID [ВидПродукции $Справочник.ВидыНоменклатуры] | , $Разделка.КоличествоСырья КоличествоНоменклатуры | , $Номенклатура.ЕдиницаИзмерения [ЕдИзмНомен $Справочник.ЕдиницыИзмерений] | , $РазделкаСтроки.ВидМПЗвТЧ [ВидМПЗ $Перечисление.ВидыМПЗ] | , $РазделкаСтроки.Выход [Материал $Справочник] | , $РазделкаСтроки.Количество КоличествоМатериала | , $РазделкаСтроки.ЕдиницаИзмерения [ЕдИзмМат $Справочник] | , Разделка.IDDOC [ДокРазделка $Документ.Разделка] | , ПодзапросСумма.Сумма As СуммаМатериала |FROM $Документ.Разделка AS Разделка With (NOLOCK) | INNER JOIN _1SJOURN AS Журнал With (NOLOCK) ON Разделка.IDDOC = Журнал.IDDOC | LEFT OUTER JOIN $Справочник.Номенклатура AS Номенклатура With (NOLOCK) ON $Разделка.Сырье = $ВидСправочника36.Номенклатура + Номенклатура.ID | LEFT OUTER JOIN $Справочник.Подразделения AS Подразделения With (NOLOCK) ON $Разделка.Подразделение = Подразделения.ID | LEFT OUTER JOIN $Справочник.ВидыНоменклатуры AS ВидыНоменклатуры With (NOLOCK) ON $Номенклатура.ВидНоменклатуры = ВидыНоменклатуры.ID | LEFT OUTER JOIN $ДокументСтроки.Разделка AS РазделкаСтроки With (NOLOCK) ON Разделка.IDDOC = РазделкаСтроки.IDDOC | LEFT OUTER JOIN (SELECT ПроизводственныеЗатраты.IDDOC Документ | , $ПроизводственныеЗатраты.Затрата Затрата | , $ПроизводственныеЗатраты.Продукция Продукция | , $ПроизводственныеЗатраты.Сумма Сумма | FROM $Регистр.ПроизводственныеЗатраты AS ПроизводственныеЗатраты With (NOLOCK)) AS ПодзапросСумма ON Разделка.IDDOC = ПодзапросСумма.Документ AND $РазделкаСтроки.Выход = ПодзапросСумма.Затрата |WHERE (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) >= :ДатаНач) | AND (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) <= :ДатаКон) | AND ((Журнал.CLOSED & 1) = 1) |
|||
24
yanejsh
01.11.11
✎
11:28
|
уф
|
|||
25
viktor_vv
01.11.11
✎
11:31
|
Можно еще так попробовать.
Вместо $Разделка.КоличествоСырья КоличествоНоменклатуры Написать Case When РазделкаСтроки.LineNo_ = 1 Then $Разделка.КоличествоСырья Else 0 End as КоличествоНоменклатуры Это если автонумерация строк стоит в документе. Тогда количество номенклатуры будет только по одной строке. |
|||
26
Ёпрст
01.11.11
✎
11:35
|
(25)<=1 , ибо строк может и не быть в ТЧ
|
|||
27
yanejsh
01.11.11
✎
11:42
|
запрос неправильно составлен, или как?
|
|||
28
Ёпрст
01.11.11
✎
11:44
|
(27) в запросе нужно оставить только 1 строку с количеством номенклатуры, в остальных строках = 0 должно быть.
|
|||
29
yanejsh
01.11.11
✎
11:47
|
(28) это-то и так понятно, что нужно. вопрос в том, как?
если по (25), то в номенклатуре, которая не разбивается по материалам = 0 количество встает |
|||
30
viktor_vv
01.11.11
✎
11:48
|
(29) Ты (26) читала ?
|
|||
31
yanejsh
01.11.11
✎
11:51
|
(Case When (РазделкаСтроки.LineNo_ <= 1)OR(ISNULL($РазделкаСтроки.Количество,0)=0) Then $Разделка.КоличествоСырья Else 0 End) -вот так получается
|
|||
32
viktor_vv
01.11.11
✎
11:51
|
(30)+ Я вот все думал, что при разделке хоть что-то должно остаться, а так съедаете наверное все :).
|
|||
33
yanejsh
01.11.11
✎
11:51
|
(30) разницы нет, результат совпал
|
|||
34
viktor_vv
01.11.11
✎
11:53
|
(31) Тогда уж
Case When IsNULL(РазделкаСтроки.LineNo_,1) = 1 Then $Разделка.КоличествоСырья Else 0 End as КоличествоНоменклатуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |