如果它们共享相同的值,则将两行连接在一起?

时间:2013-10-31 14:46:00

标签: database tsql

我已经转移了观点和其他观点,我已经到了这里。以下面的例子为例

 Name     | Quantity | Billed |
          |          |        |
 PC Tablet|   0      |  100   |
 PC Tablet|   100    | -2345  |
 Monitor  |   9873   | 0      |
 Keyboard |   200    | -300   |

所以基本上选择我会做这个观点。我希望它能够带来数据,但它首先按名称排序,因此它的字母顺序很好,而且由于一些原因,一些记录出现的时间超过一次(我认为最多是4次)。如果您添加带有重复项的行,则真正的“数量”和“开帐单”将是正确的。

注意:实际的查询很长,但我把它分解为一个简单的例子来解释这个问题。这个想法是一样的,但是有很多列需​​要加在一起...所以我正在寻找一个如果它包含相同名称就会将它们组合在一起的查询。我尝试了一堆不同的查询但没有成功,它将所有行都卷成一个。或者它不起作用,我得到一堆空错误/名称列在选择列表/组中无效,因为它不是聚合函数..

这甚至可能吗?

1 个答案:

答案 0 :(得分:1)

尝试:

SELECT A.Name, A.TotalQty, B.TotalBilled
FROM (
 SELECT Name, SUM(Quantity) as TotalQty
 FROM YourTableHere
 GROUP BY Name
 ) A
INNER JOIN
(
 SELECT Name, SUM(Billed) as TotalBilled
 FROM YourTableHere
 GROUP BY Name
) B
ON A.Name = B.Name