sql - 聚合 SQL 函数以从每个分组中仅获取一个

标签 sql sql-server t-sql sql-server-2000

我有一个表,需要对 SQL-Server 2000 中的许多字段进行规范化。 它包含 2 个字段,我用它们来提出规范定义的不同组合。 ID和费率:有多行相同的ID和费率

我首先通过对 ID 和费率组合进行分组来创建临时表。

SELECT ID, Count(*) AS IDCounts, SUM(RATE) As Total 
INTO #Temp
GROUP BY ID

现在我使用 Distinct 来仅查找唯一的组合。因此,我将有多个 ID 组共享相同的 Total 和 IDCounts

SELECT DISTINCT Total, IDCounts
INTO #uniques
FROM #Temp

现在我的问题是如何将单个 ID 连接回 IDCounts 和 Total 的不同分组并将其放入新表中?只要我使用同一组中的 ID,组中的哪一个 ID 并不重要。

最佳答案

保留临时表(尽管这可以在单个查询中完成):

SELECT ID, Count(*) AS IDCounts, SUM(RATE) As Total 
INTO #Temp
GROUP BY ID

SELECT Total, IDCounts, MIN(ID) AS SomeID
INTO #uniques
FROM #Temp
GROUP BY Total, IDCounts

关于sql - 聚合 SQL 函数以从每个分组中仅获取一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3242552/

相关文章:

sql - 相当于SQL中的VB AndAlso?

sql - POSTGRESQL,无子查询 : subquery in FROM must have an alias

c# - 'CREATE VIEW' 必须是查询批处理中的第一个语句

sql - PostgreSql 从选择返回的 ID 中插入

mysql - 从表格中为每一行选择最高版本

sql - 使用自定义 "as"语句将行转换为列

sql-server - “Microsoft.ACE.OLEDB.16.0”提供程序未在本地计算机上注册。 (系统.数据)

sql-server - 存储过程的输出参数

sql - T-SQL 存储过程,在 exec 中声明变量

sql - 在 if 语句中引用数据库