简体   繁体   English

如何获得联接中相同行的总和

[英]How do I get sum of identical rows in a join

I got a problem with my SQL code, I use multiple joins from different tables and my code looks like this: 我的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

My problem is that it turns out like this 我的问题是结果是这样的

在此处输入图片说明

I want it to remove duplicates and add the numbers together in the "antal" column so it should be: "Tulle - Banan - 9" 我希望它删除重复项并将数字添加到“ antal”列中,因此应该是:“ Tulle-Banan-9”

Thank you! 谢谢!

Edit: 编辑:

I changed my datatypes from text to nvchar and varchar. 我将数据类型从文本更改为nvchar和varchar。 I used @lad2025's top answer. 我使用了@ lad2025的最佳答案。

Looks like you need grouping and SUM aggregate function: 看起来您需要分组和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;

EDIT: 编辑:

Do not use obsolete types text/ntext/image , for now you can use CAST but you should consider changing column datatype: 不要使用过时的类型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, and image

ntext, text, and image data types will be removed in a future version of Microsoft SQL Server. 在将来的Microsoft SQL Server版本中,将删除ntext,text和image数据类型。 Avoid using these data types in new development work, and plan to modify applications that currently use them. 避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。 Use nvarchar(max), varchar(max), and varbinary(max) instead. 请改用nvarchar(max),varchar(max)和varbinary(max)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM