Как удалить все дублирующиеся пары из списка? - PullRequest
2 голосов
/ 07 ноября 2019

Я хотел бы добавить все значения CY, где значения PY одинаковы для PID

Другими словами: PY PID 1 и PY 4 PID одинаковы. PY для PID 2 и PY для PID 5 одинаковы

Select
    [ID] ,a.[PY] ,a.[CY] ,a.[LAT] ,a.[LON] Into #tempa
        From MyTable as a
            INNER JOIN MyTable as b on a.PY = b.PY and a.ID <> b.ID

Select
    Convert (varchar, LAT) + ', ' + convert (varchar, LON) as 'Combined', 
    SUM(CY) as Total ,COUNT(ID) as [Count] Into #tempb
        From #tempa
            Group by Convert (varchar, LAT) + ', ' + convert (varchar, LON)
            Having COUNT(ID) < 2

Select
    SUM(Total) as [Total]
        From #tempb

Как добавить значения CY только для ID 1, 4 и 5?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019
Select * Into #temp2 From #temp t
Where Exists (
Select 1 From #temp t2
Where i2.PY = t.PY and t2.ID <> t.ID);
Select * Into #temp3 From #temp t
Where Not exists (
Select 1 From #Temp t2
Where t2.ID <> t.ID);

Select * From #temp2
Select * From #temp3

SELECT SUM(a.CY) as CY FROM #temp2 a
INNER JOIN #temp3 b on a.ID = b.ID    
0 голосов
/ 07 ноября 2019

Вы можете довольно легко удалить строки 2 и 3:

select *
from insurance i
where not exists (select 1
                  from insurance i2
                  where i2.location_pair = i.location_pair and i2.pid <> i.pid
                 );

Исходя из вашего описания, я думаю, что вы хотите объединить это по py:

select min(pid), py, sum(cy), min(location_pair)
from insurance i
where not exists (select 1
                  from insurance i2
                  where i2.location_pair = i.location_pair and i2.pid <> i.pid
                 )
group by py;

Однако,это не возвращает результаты, которые вы укажете. Здесь - это дБ <> скрипка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...