Group BY Expression列

时间:2018-03-20 04:03:47

标签: sql sql-server 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 

我们真的很感激一些想法!

谢谢, 崔西

3 个答案:

答案 0 :(得分:0)

试试这个

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

答案 1 :(得分:0)

SELECT SUM(QTYCOM) OVER (PARTITION BY ITEMNO) 
FROM

...

答案 2 :(得分:0)

一旦您将((YourActivity)getContext).GetData("your data here"); 用于top语句,您需要使用order by。您可以尝试以下查询。

select

由于