PostgreSQL - Как получить столбцы с суммой из 1 значения столбца, сгруппировав еще 3 столбца - PullRequest
0 голосов
/ 29 мая 2020

Пример таблицы:

    ACC  ACCN   PART    DESC    UT  SITE    QTY  HAZ    SERIAL    S2    STATUS
    TR1  MSR    KKGR     NO     Y   56      2     N                       ST
    TR1  MSR    KUIJ     NO     Y   98      2     N                       HD
    TR1  MSR    KKGR     NO     Y   56      1     N                       ST
    TR2  MSR    KUIJ     NO     Y   98      5     N                       ST
    TR2  MSR    KKGR     NO     Y   56      1     N                       ST
    TR5  MSR    KUIJ     NO     Y   98      5     N                       ST
    TR1  MSR    KUIJ     NO     Y   98      5     N     KKMH              ST

Желаемый результат:

ACC    ACCN PART    DESC    UT  SITE    QTY HAZ SERIAL  S2  STATUS
TR1    MSR  KKGR     NO     Y   56      3   N                ST
TR1    MSR  KUIJ     NO     Y   98      2   N                HD
TR2    MSR  KUIJ     NO     Y   98      5   N                ST
TR2    MSR  KKGR     NO     Y   56      1   N                ST

SQL запрос на выборку всех столбцов, когда серийный номер EMPTY / NULL, а затем группировка по сайту, части и статусу. но значение столбца QTY = сумма количества для сайта, части, группировки состояний.

Я пробовал с

SELECT ACC,
       ACCN,
       PART,
       DESC,
       UT,
       SITE,
       QTY,
       HAZ,
       SERIAL,
       S2,
       STATUS 
  FROM mytable 
 WHERE acc IN ('TR1','TR2')
   AND serial = '' 
 GROUP 
    BY (part,site,status)

Но я получил ошибку, например:

ОШИБКА: столбец mytable.account должен появиться в предложении GROUP BY или использоваться в агрегатной функции

1 Ответ

0 голосов
/ 29 мая 2020

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

SELECT ACC,
       ACCN,
       PART,
       DESC,
       UT,
       SITE,
   SUM(QTY) as QTY,
   HAZ,
   SERIAL,
   S2,
   STATUS 
FROM mytable 
WHERE acc IN ('TR1','TR2')
AND serial = '' 
GROUP BY ACC,
   ACCN,
   PART,
   DESC,
   UT,
   SITE,
   HAZ,
   SERIAL,
   S2,
   STATUS 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...