我有一个包含这样的数据的表,
GroupName group_code company_name Company Jan Feb
USA G142 3M Corp 3MCorp 117 35
USA G23581 3M Corp 3MCorp 117 35
USA G899 3M Corp 3MCorp 117 35
USA G2165 MNA Inc. MNA Inc. 5 3
USA G6245 MNA Inc. MNA Inc. 5 3
USA G3425 Acterna Inc. Acterna Inc. 245 204
最终结果应该是每个公司名称1行,最大的group_code值如下,
GroupName group_code company_name Company Jan Feb
USA G23581 3M Corp 3MCorp 117 35
USA G6245 MNA Inc. MNA Inc. 5 3
USA G3425 Acterna Inc. Acterna Inc. 245 204
我该怎么做?
答案 0 :(得分:1)
这适用于您提供的测试数据。看起来您想要获取具有最大值(数字)尾随前导字符的group_code。所以,如果我认为正确,你可以试试这个:
WITH cteRankedGroupCodes
AS
(
select GroupName
, group_code
, company_name
, company
, jan
, feb
, rank() over ( partition by company_name
order by convert(int, substring(group_code, 2, len(group_code))) desc
) as GroupCodeRank
from SimilarRecords --your table
)
select GroupName
, group_code
, company
, jan
, feb
from cteRankedGroupCodes
where GroupCodeRank = 1
答案 1 :(得分:0)
您需要使用SQL Server Group By。
答案 2 :(得分:0)
使用
SELECT [GroupName], max([group_code]), [company_name], [Company], [Jan], [Feb]
FROM Table1
GROUP BY [GroupName], [company_name], [Company], [Jan], [Feb]
如果您需要专门按数字顺序对group_code进行排序,则需要更改max
函数中的表达式以引入前导零或重新格式化数据以按字典顺序排列。有关结果,请参阅SqlFiddle。
答案 3 :(得分:0)
select GroupName , group_code , company_name , Company , Jan ,Feb
from table
group by GroupName , company_name ,Company , Jan , Feb
having group_code = max(group_code)