Столбец выражения Group BY

мы пытаемся заставить нашу таблицу складывать вместе все значения в столбце 2 (QtyComp - в основном столбец выражения qtyorder * totalqty), где у них одинаковый ItemNo (столбец 1).

Итак, на данный момент мы получаем следующее:

ItemNo          QtyCom
7441            3
7441            1
7441            5

Мы хотим, чтобы он возвращал это:

ItemNo          QtyCom
7441            9

Наш код ниже; Я выделил жирным шрифтом ту часть, которая нам нужна, чтобы суммировать результаты:

SELECT TOP (100) PERCENT ItemSpecs_2.itemno, 
                         workorderdetails.qtycomplete * 
                         ItemSpecFullStruc_2.totalqtyperroot AS QtyComp 
FROM   dbo.workorderdetails AS WorkOrderDetails 
       INNER JOIN dbo.itemspecfullstruc AS ItemSpecFullStruc_2 
               ON ItemSpecFullStruc_2.rootitemspecid = 
                  workorderdetails.itemspecid 
       INNER JOIN dbo.itemspecs AS ItemSpecs_2 
               ON ItemSpecs_2.itemspecid = ItemSpecFullStruc_2.childitemspecid 
       INNER JOIN dbo.workorder AS WorkOrder_1 
               ON WorkOrder_1.workorderid = workorderdetails.workorderid 
       LEFT OUTER JOIN dbo.tobescheduled_completed 
                    ON WorkOrder_1.workorderid = 
                       dbo.tobescheduled_completed.workorderid 
WHERE ( workorderdetails.completed = 1 ) 
      AND ( workorderdetails.compdate > Getdate() - 42 ) 
GROUP  BY ItemSpecs_2.itemno, 
          workorderdetails.qtyordered, 
          ItemSpecFullStruc_2.totalqtyperroot, 
          workorderdetails.[lineno], 
          workorderdetails.qtycomplete, 
          workorderdetails.compdate, 
          workorderdetails.qtycomplete * ItemSpecFullStruc_2.totalqtyperroot 

Мы были бы очень признательны за идеи!

Спасибо, Триш

Что вы имеете в виду под «умножением неправильно»?

Xedni 20.03.2018 05:06

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

Yogesh Sharma 20.03.2018 05:08

Извинения. Ключевым моментом здесь является часть уравнения «Выбрать», поэтому (я упростил дескрипторы полей): SELECT TOP (100) PERCENT ItemSpecs.ItemNo, WorkOrder.QtyOrdered * ItemSpec.TotalQty AS QtyComp

user9399808 20.03.2018 05:16

Приведенное выше возвращает правильные результаты в каждой строке, но не группирует их вместе. Альтернативой, которая их группирует, является SELECT TOP (100) PERCENT ItemSpecs.ItemNo, SUM (WorkOrder.QtyOrdered * ItemSpec.TotalQty) AS QtyComp

user9399808 20.03.2018 05:18

Под «умножением неправильно» я подразумеваю, что, хотя вторая строка выше группирует, кажется, что суммируется QtyOrdered перед выполнением QtyOrdered * TotalQty?

user9399808 20.03.2018 05:19

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

PSK 20.03.2018 05:20

Теперь упростил вопрос - надеюсь, это поможет?

user9399808 20.03.2018 05:44

Похоже, вам нужна СУММА. Сделайте сумму (workorderdetails.qtycomplete * ItemSpecFullStruc_2.totalqtyperroot)

Fact 20.03.2018 06:35

Также я считаю, что вы можете удалить последнюю строку

Fact 20.03.2018 06:36
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
9
86
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Попробуй это

SELECT TOP (100) PERCENT ItemSpecs_2.itemno, 
                     sum(workorderdetails.qtycomplete * 
                     ItemSpecFullStruc_2.totalqtyperroot) AS QtyComp 
FROM   dbo.workorderdetails AS WorkOrderDetails 
   INNER JOIN dbo.itemspecfullstruc AS ItemSpecFullStruc_2 
           ON ItemSpecFullStruc_2.rootitemspecid = 
              workorderdetails.itemspecid 
   INNER JOIN dbo.itemspecs AS ItemSpecs_2 
           ON ItemSpecs_2.itemspecid = ItemSpecFullStruc_2.childitemspecid 
   INNER JOIN dbo.workorder AS WorkOrder_1 
           ON WorkOrder_1.workorderid = workorderdetails.workorderid 
   LEFT OUTER JOIN dbo.tobescheduled_completed 
                ON WorkOrder_1.workorderid = 
                   dbo.tobescheduled_completed.workorderid 
WHERE ( workorderdetails.completed = 1 ) 
  AND ( workorderdetails.compdate > Getdate() - 42 ) 
GROUP  BY ItemSpecs_2.itemno, 
      workorderdetails.qtyordered, 
      ItemSpecFullStruc_2.totalqtyperroot, 
      workorderdetails.[lineno], 
      workorderdetails.qtycomplete, 
      workorderdetails.compdate
SELECT SUM(QTYCOM) OVER (PARTITION BY ITEMNO) 
FROM

...

После того, как вы будете использовать top для оператора select, вам нужно будет использовать order by. вы можете попробовать следующий запрос.

SELECT TOP(100) PERCENT A.itemno,SUM(QtyComp) FROM
(SELECT ItemSpecs_2.itemno, 
                     (workorderdetails.qtycomplete * 
                     ItemSpecFullStruc_2.totalqtyperroot) AS QtyComp 
FROM   dbo.workorderdetails AS WorkOrderDetails 
   INNER JOIN dbo.itemspecfullstruc AS ItemSpecFullStruc_2 
           ON ItemSpecFullStruc_2.rootitemspecid = 
              workorderdetails.itemspecid 
   INNER JOIN dbo.itemspecs AS ItemSpecs_2 
           ON ItemSpecs_2.itemspecid = ItemSpecFullStruc_2.childitemspecid 
   INNER JOIN dbo.workorder AS WorkOrder_1 
           ON WorkOrder_1.workorderid = workorderdetails.workorderid 
   LEFT OUTER JOIN dbo.tobescheduled_completed 
                ON WorkOrder_1.workorderid = 
                   dbo.tobescheduled_completed.workorderid 
WHERE ( workorderdetails.completed = 1 ) 
  AND ( workorderdetails.compdate > Getdate() - 42 ) ) A
GROUP  BY A.itemno
ORDER BY A.itemno

Спасибо

Другие вопросы по теме