如何使用按列分组获取所有其他列值

时间:2018-07-24 09:29:18

标签: sql

如何按以下方式获取除分组依据之外的其他列值,

SELECT DIS.iDataItemID, 
DIS.iDataItemCurrentStatusID, 
COUNT(*) , 
DI.iDataTypeID,
DI.iEmployeeID,
DI.iEmployerID
FROM DataItem DI INNER JOIN DataItemStatus DIS 
ON DI.iDataItemID = DIS.iDataItemID Where iDataItemCurrentStatusID = 1
GROUP BY DIS.iDataItemID, DIS.iDataItemCurrentStatusID

如果我从选择中删除了三列(即iDataTypeID,iEmployeeID,iEmployerID),查询工作正常

请让我知道如何使用这些值获取结果

2 个答案:

答案 0 :(得分:0)

使用docker exec -it container_name /bin/bash时,要使您的SQL有效,您需要使用聚合(group bycount)或在max列表中具有该列(如果不执行严格模式,则MySQL在这方面是一个例外。)

简而言之,只需在当前group by行的末尾添加您想看到的3个额外的列:

group by

答案 1 :(得分:0)

大多数DBMS具有 window 功能支持:

SELECT DIS.iDataItemID, DIS.iDataItemCurrentStatusID, 
       COUNT(*) OVER (PARTITION BY DIS.iDataItemID, DIS.iDataItemCurrentStatusID), 
       DI.iDataTypeID,
       DI.iEmployeeID,
       DI.iEmployerID
FROM DataItem DI INNER JOIN 
     DataItemStatus DIS 
     ON DI.iDataItemID = DIS.iDataItemID 
WHERE iDataItemCurrentStatusID = 1;

我认为您的DB也是其中之一,具有窗口功能支持。