SQL Server将一行添加到另一列但仅针对一列

时间:2017-05-16 09:02:12

标签: sql sql-server

下图可能最能理解。

I have the table on the left but want the table on the right。我想将任何共享参考编号的项目添加到一起,而不将表格编号列相加。我的SQL格式为

SELECT

[Order Reference]
,[Item Price]
,[Table Number]

From Orders

我很确定我需要从第二个SELECT中对SELECT项目价格进行总结,但是我无法在不对表格编号求和的情况下获得对订单参考求和的确切语法。

编辑:

我认为我遗漏了第一批回答者的重要信息。我清楚地搞砸了样本数据。很多道歉。该表有其他列,我没有包含在我的查询中,所以当我尝试一个组时,我仍然会得到多行。我想隔离特定列并合并行而忽略任何不同的列(我不介意选择其他列的哪些数据)

为了清楚(希望),该表还有20个其他列,例如discount yes或no,我基本上想要忽略但似乎阻止行从一个简单的group by子句合并在一起。

enter image description here

4 个答案:

答案 0 :(得分:1)

您需要SUM()项目和GROUP您的结果BY您的(所需的唯一)值。

SELECT [Order Reference],
       SUM(PRICE) as 'Items Total',           
       [Table Number] as 'Table Number'
FROM Orders
Group By [Order Reference], [Table Number]

注意:

使用SUM,例如MAXSELECT和其他人时,您必须按照要ul li ng-repeat显示的每一列进行分组。

答案 1 :(得分:1)

尝试此查询以找到答案

SELECT Order_Reference, SUM(Item_Price) AS 'Total_Item', Table_Number 
FROM Your_Table_Name
GROUP BY Order_Reference,Table_Number 
ORDER BY Order_Reference ASC;

答案 2 :(得分:0)


使用以下查询获得预期结果

SELECT ORDER_REFERENCE, SUM(ITEM_PRICE) AS ITEMS_TOTAL, TABLE_NUMBER FROM TABLE_NAME
GROUP BY ORDER_REFERENCE, TABLE_NUMBER  ORDER BY TABLE_NUMBER;

答案 3 :(得分:0)

Why not use Order By clause for the two column OrderReference and TableNumber.

You can use the below query but this will contradit the result table you have shown as the One OrderReference will produce two output since there TableNumber is different.

SELECT orderreference, 
       Sum(itemprice) AS ItemTotal, 
       tablenumber 
FROM   so_orders 
GROUP  BY orderreference, 
          tablenumber 
ORDER  BY orderreference