04.09.2003, 14:39 | #1 |
Участник
|
Повторяющиеся строки в отчете...
При формировании отчета используются следующие таблицы:
InventTable - из нее берется номенклатура InventTrans - считается сумма количества InventDim - в ней есть поле "Брак/Годные" Как я понимаю связка такова: InventTable - InventTrans - InventDim Надо: Если в отчет попадают строчки с Брак и Годные, то надо вывести две строки с одной номенклатурой. Если же в отчете только Годные, то надо вывести одну строку. Я конечно сдела выборку перебором все строк запроса, но это очень долго и с каждой новой строкой все дольше и дольше. Подскажите, пожалуйста, как лучше построить отчет? |
|
05.09.2003, 09:25 | #2 |
Участник
|
InventTrans - вообще таблица опасная.
Но я не понял сообщения - "если попадают две строки, то нужно две; если попадает одна - то нужно одну". ? |
|
05.09.2003, 10:04 | #3 |
Участник
|
Цитата:
Изначально опубликовано LCh
InventTrans - вообще таблица опасная. Но я не понял сообщения - "если попадают две строки, то нужно две; если попадает одна - то нужно одну". ? InventTable ItemId Ном_1 Ном_2 InventTrans ItemId.................Qty.....................DimId Ном_1...............2.........................dim_1 Ном_1...............1.........................dim_1 Ном_1...............4.........................dim_2 Ном_2...............5.........................dim_3 Ном_2...............6.........................dim_4 InventDim DimId........................Brak dim_1.......................годен dim_2.......................брак dim_3.......................годен dim_4.......................годен В таком варианте в отчете должно вывестись следующее: ItemId.....................Sum(Qty).................Brak Ном_1...................3 Ном_1...................4................................брак Ном_2...................11 Вот как решить такую задачу, не перебирая всех строк в InventTrans? |
|
05.09.2003, 10:23 | #4 |
Участник
|
while select sum(qty)
inventtrans group by itemid join inventdim group by brak where inventtrans.inventdimid == inventdim.inventdimid в mssqlsrv это будет выглядеть примерно так: select sum(qty), inventtrans.itemid, inventdim.brak from inventtrans inner join inventdim on inventtrans.inventdimid = inventdim.inventdimid where inventtrans.dataareaid = 'tst' and inventdim.dataareaid = 'tst' group by inventtrans.itemid, inventdim.brak з.ы. у тебя получилось новую складскую аналитику ввести? поделись секретом! |
|