如何在连接中获取相同行的总和

时间:2015-11-18 13:37:07

标签: sql sql-server tsql

我的SQL代码出现问题,我使用来自不同表的多个连接,我的代码如下所示:

SELECT Person.navn, Vare.varenavn, Ordre.antal FROM Ordre
JOIN Person
ON Person.Id = Ordre.P_id
JOIN Vare
ON Vare.Id = Ordre.vareid

我的问题是它就像这样

enter image description here

我希望它删除重复项并在" antal"中添加数字。专栏应该是:"图勒 - 巴南 - 9"

谢谢!

修改

我将我的数据类型从text更改为nvchar和varchar。我使用了@ lad2025的最佳答案。

1 个答案:

答案 0 :(得分:2)

看起来您需要分组和SUM汇总功能:

SELECT Person.navn, Vare.varenavn, SUM(Ordre.antal) AS antal
FROM Ordre
JOIN Person
  ON Person.Id = Ordre.P_id
JOIN Vare
  ON Vare.Id = Ordre.vareid
GROUP BY Person.navn, Vare.varenavn;

修改

不要使用过时的类型text/ntext/image,现在您可以使用CAST,但您应该考虑更改列数据类型:

SELECT CAST(Person.navn AS NVARCHAR(MAX)),
       CAST(Vare.varenavn AS NVARCHAR(MAX)),
       SUM(Ordre.antal) AS antal
FROM Ordre
JOIN Person
  ON Person.Id = Ordre.P_id
JOIN Vare
  ON Vare.Id = Ordre.vareid
GROUP BY CAST(Person.navn AS NVARCHAR(MAX)), CAST(Vare.varenavn AS NVARCHAR(MAX));

<强> ntext, text, and image

  将来的版本中将删除

ntext,text和image 数据类型   Microsoft SQL Server。避免在新的中使用这些数据类型   开发工作,并计划修改当前使用的应用程序   他们。请改用nvarchar(max),varchar(max)和varbinary(max)。