2010-07-14 5 views
2

У меня есть таблица, которую мне нужно нормализовать со многими полями. В SQL-Server 2000. Он содержит 2 поля, которые я использую, чтобы создать четкую комбинацию, как определено спецификациями. ID и тариф: существует несколько строк с одинаковыми идентификаторами и расценкамиСовокупная функция SQL для захвата только одной из каждой группы

Сначала я создал временную таблицу, объединив комбинации идентификаторов и ставок.

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

Теперь я использую Distinct, чтобы найти только уникальные комбинации. Таким образом, я буду иметь несколько групп идентификаторов обмена же Total и IDCounts

SELECT DISTINCT Total, IDCounts 
INTO #uniques 
FROM #Temp 

Теперь мой вопрос заключается в том, чтобы присоединиться один идентификатор обратно, что различные группировки IDCounts и Total и положить, что в новую таблицу? Неважно, какой из идентификаторов в группах, если я использую один из тех же групп.

+0

почему вопрос помечена 2K5 если вы хотите 2K решения? –

+0

Почему SQL Server 2000 не подразумевает T-SQL? – LittleBobbyTables

ответ

2

Сохранение ваших временных таблиц (хотя это может быть сделано в одном запросе):

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 
+0

Еще раз спасибо Cade! – stevenjmyu

2

Добавить "Min (ID) AS FirstId" для избранных в #uniques.

-1

Попробуйте что-то вроде этого:

SELECT MAX(ID) AS Id, Count(*) AS IDCounts, SUM(RATE) As Total 
FROM SOMETABLE 
GROUP BY IDCounts, Total 
Смежные вопросы