Combing SQL Query Result для суммирования строк с соответствующими текстовыми значениями - PullRequest
0 голосов
/ 03 марта 2020
SELECT DISTINCT 
    V_NAME AS VendorName, 
    P_QOH AS Quantity,
    CASE 
        WHEN  P_DESCRIPT  LIKE  '%blade%'  THEN 'Blade'
        WHEN  P_DESCRIPT LIKE  '%screw%'  THEN 'Screw Driver'
        WHEN  P_DESCRIPT  LIKE  '%hammer%'  THEN 'Hammer'
        ELSE 'OTHERS' 
    END AS ProductCategory
FROM Product, Vendor
WHERE 
    ( 
        P_DESCRIPT  LIKE  '%blade%'
        OR P_DESCRIPT LIKE  '%screw%'
        OR P_DESCRIPT  LIKE  '%hammer%' 
    )
    AND Product.V_CODE = Vendor.V_CODE;

Этот запрос дает мне результат:

Gomez Bros.|32|Blade
Gomez Bros.|18|Blade
ORDVA, Inc.|8|Blade
ORDVA, Inc.|6|Blade
Bryson, Inc.|23|Hammer
Bryson, Inc.|172|Screw Driver
D&E Supply|237|Screw Driver
Gomez Bros.|237|Screw Driver
Gomez Bros.|23|Hammer
Bryson, Inc.|32|Blade
Bryson, Inc.|237|Screw Driver

Я пробовал множество вещей безрезультатно. То, что я хочу сделать, это объединить строки в наборе результатов, которые имеют одинаковое имя инструмента (например, «Молоток, Отвертка, Лезвие»), объединяя значения отдельных строк для каждой перечисленной компании.

Итак, например, я хочу, чтобы первые две строки читались как

Gomez Bros.|50|Blade

Объединение двух строк со значениями 32 и 18, которые обе имеют тип "Blade"

Любая помощь приветствуется! Я очень новичок в SQL. Бороться здесь. Спасибо всем.

1 Ответ

0 голосов
/ 03 марта 2020

Похоже, вы хотите агрегировать:

SELECT 
    v.V_NAME AS VendorName, 
    SUM(p.tP_QOH) AS Quantity,
    CASE 
        WHEN  p.P_DESCRIPT  LIKE  '%blade%'  THEN 'Blade'
        WHEN  p.P_DESCRIPT LIKE  '%screw%'  THEN 'Screw Driver'
        WHEN  p.P_DESCRIPT  LIKE  '%hammer%'  THEN 'Hammer'
        ELSE 'OTHERS' 
    END AS ProductCategory
FROM Product p
INNER JOIN Vendor v ON p.V_CODE = v.V_CODE
WHERE 
       p.P_DESCRIPT LIKE '%blade%'
    OR p.P_DESCRIPT LIKE '%screw%'
    OR p.P_DESCRIPT LIKE '%hammer%'
GROUP BY v.V_CODE, VendorName, ProductCategory

Примечания:

  • всегда использовать правильный синтаксис объединения модеров (с ON ключевое слово) вместо объединений старой школы (с запятой в предложении from)

  • лучше ставить перед каждым столбцом префикс таблицы, к которой он принадлежит (я сделал несколько предположения, которые вам, возможно, потребуется пересмотреть)

  • псевдонимы таблиц делают запрос короче для записи и чтения

...