Запрос на получение числа, меньшего фиксированного числа - PullRequest
0 голосов
/ 04 августа 2020

Мне дается задача выяснить, у каких MOQ (минимальное количество заказа) меньше или меньше по сравнению с фиксированным MOQ. Сначала я использовал метод, который был while read () (используя c#) и go построчно.

Но он медленный, когда есть 60k записей.

Теперь я хочу обновить все за один раз вместо обновления и прочитать его построчно.

Это мой предыдущий код:

 String cmdtxt8 = "SELECT MANUF_PART, MATERIAL FROM IR_MOQANS GROUP BY MANUF_PART, MATERIAL";
            OracleDataReader odrget = db.read(cmdtxt8);
            while (odrget.Read())
            {
                String cmdtxt9 = "UPDATE IR_MOQANS SET NOTE = 'GET'
                WHERE MANUF_PART  = '" + odrget.GetString(0) + "' AND MATERIAL = '" + odrget.GetString(1) + "' 
                AND BUOM_MOQ  
                <= 
                CAST ( (
                SELECT BUOM_MOQ FROM IR_MOQANS 
                WHERE MANUF_PART  = '" + odrget.GetString(0) + "' AND MATERIAL = '" + odrget.GetString(1) + "' 
                AND FIXD IS NOT NULL AND ROWNUM <= 1) 
                AS DECIMAL)";
                db.execmd(cmdtxt9);
            }

Это запрос, который я пробовал, но не ответил t работает (я хочу что-то вроде этого):

UPDATE IR_MOQANS SET DELTA = 'G' 
WHERE SCALE_QTY 
<= 
(
    SELECT BUOM_MOQ  FROM IR_MOQANS WHERE (MANUF_PART, MATERIAL) 
    IN 
    (
        SELECT MANUF_PART, MATERIAL FROM IR_MOQANS GROUP BY MANUF_PART, MATERIAL
    ) 
    AND FIXD IS NOT NULL AND ROWNUM <= 1
)
AND (MANUF_PART, MATERIAL) 
IN 
(
    SELECT MANUF_PART, MATERIAL FROM IR_MOQANS GROUP BY MANUF_PART, MATERIAL
);

Ниже приведен пример моей таблицы:

manuf_part  |material   |fixd    |buom_moq
-------------------------------------------
A           |Pen        |X       |100      
-------------------------------------------
A           |Pen        |        |50        
-------------------------------------------
A           |Pen        |        |110     
-------------------------------------------
A           |Bag        |X       |200     
-------------------------------------------
B           |Cap        |        |20       
-------------------------------------------
B           |Cap        |X       |50       
-------------------------------------------
B           |Cap        |        |70       
-------------------------------------------

Ожидаемый результат будет примерно таким:

manuf_part  |material   |fixd    |buom_moq   |note
--------------------------------------------------------
A           |Pen        |X       |100        |GET
--------------------------------------------------------
A           |Pen        |        |50         |GET
--------------------------------------------------------
A           |Pen        |        |110        |
--------------------------------------------------------
A           |Bag        |X       |200        |GET
--------------------------------------------------------
B           |Cap        |        |20         |GET
--------------------------------------------------------
B           |Cap        |X       |50         |GET
--------------------------------------------------------
B           |Cap        |        |70         |
--------------------------------------------------------

Manuf_part и материал ДОЛЖНЫ быть сгруппированы, чтобы получить одну и ту же категорию. Например, (A, Pen) ДОЛЖНО сравниваться только с (A, Pen).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...