获取列值等于该列的聚合值的记录

时间:2011-12-07 09:13:56

标签: sql aggregate-functions

我有一个包含多个列的表,例如“pcode”,“完成%”和“pstatus”。 例如:

pcode P_Name     completion  subordinate         pstatus
p123  inventory     10%         sanjay           progrssing  
p123  test          20%         komal            progrssing
p124  asd           20%         ritika           progrssing
p124  qwsdf         10%         asd              progrssing

我想获得带有其他列的最高complete%的不同代码的结果。所有字段都是文本。我正在使用asp.net使用c#和msaccess数据库。

我正在寻找的结果是:

 pcode P_Name     completion  subordinate         pstatus
  p123  test          20%         komal           progrssing
  p124  asd           20%         ritika          progrssing

1 个答案:

答案 0 :(得分:1)

在数据库方面,您必须过滤数据。以下查询应该可以帮助您

SELECT t1.[pcode], t1.[P_Name], t.[completion], MAX(t1.[subordinate]) [subordinate], [pstatus]
FROM [YOUR_TABLE] t1
    JOIN 
    (SELECT [pcode], max([completion]) [completion]
    FROM [YOUR_TABLE]
    GROUP BY [pcode]) t
    on t.[pcode] = t1.[pcode] and t.[completion] = t1.[completion]
GROUP BY t1.[pcode], t1.[P_Name], t.[completion], t1.[pstatus]

注意:关于问题的binding部分,如果您希望获得(精确)答案,则必须提供更多信息。