sql - 按聚合分组

标签 sql sql-server join group-by distinct

这是我第一次接触 SQL Server,实际上我不知道自己在做什么
直到今天我只使用过 MySQL,但是让我们切入正题吧。
我有一个包含联接的查询。

SELECT locations.locationId, locations.code, locations.description,
       machines.RoutingCode, machines.FaNo, machines.nameBg 
FROM scanlog 
LEFT JOIN  locations ON locations.Barcode = scanlog.LineBarcode 
LEFT JOIN machines ON machines.barcode = scanlog.MachineBarcode

问题: 我想对 machines.RoutingCodelocations.code 上的行进行分组。
我的意思是像MySQL一样。如果我有 20 个具有相同 routingCode 和相同 code 的条目,它只会返回给我一行。那么这里有什么方法可以做到这一点,或者我应该尝试使用 DISTINCT 吗?

最佳答案

尝试这样的事情 -

SELECT
      locationId = MAX(l.locationId)
    , l.Code
    , [description] = MAX(l.[description])
    , m.RoutingCode
    , FaNo = MAX(m.FaNo)
    , nameBg = MAX(m.nameBg)
FROM dbo.scanlog s
LEFT JOIN dbo.locations l ON l.BarCode = s.LineBarcode
LEFT JOIN dbo.machines m ON m.BarCode = s.MachineBarcode
GROUP BY 
       l.Code
     , m.RoutingCode

关于sql - 按聚合分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17670597/

相关文章:

php - 如何加入具有 2 个主键的 SQL 表内容?

sql - 根据列的结果查询添加列

mysql - 用于替换 MySQL 查询中的 GREATEST() 的标准 SQL

mysql - 需要用 SQL 编写稍微高级的查询

sql - 如何在 CASE 语句中分配多个值?

mysql - 在链接的 MySQL 服务器中的 6 个表中的 3 个上查询时出错

php - 从不同的表、子查询或联接中选择

sql - 将两个相同的 id 以不同的名称连接到同一个表?

sql - Recordset.Update 数据库或对象是只读的

mysql - SQL从另一列的值创建一列