Таблица @ t1 - это основная таблица, которая должна иметь суммарные значения таблицы @ t2 после импорта.Сравнение суммированных значений с главной таблицей
DECLARE @t1 TABLE (
typ int,
total float
);
insert into @t1 (typ,total) values(1,30.0)
insert into @t1 (typ,total) values(2,70.0)
insert into @t1 (typ,total) values(3,99.9)
DECLARE @t2 TABLE (
typ int,
value float
);
insert into @t2 (typ,value) values(1, 10.0)
insert into @t2 (typ,value) values(1, 20.0)
insert into @t2 (typ,value) values(2, 30.0)
insert into @t2 (typ,value) values(2, 40.0)
insert into @t2 (typ,value) values(3, 50.0)
select
t1.typ,
t1.total,
t2.typ,
t2.value,
case when total = value then 'TRUE' else 'FALSE' end as Result
from @t1 t1
left join @t2 t2 on t2.typ = t1.typ
Результаты в:
typ|total|typ|value|Result
1 |30 |1 |10 |FALSE
1 |30 |1 |20 |FALSE
2 |70 |2 |30 |FALSE
2 |70 |2 |40 |FALSE
3 |99,9 |3 |50 |FALSE
Конечно, результат всегда 'FALSE', потому что t2.value еще не подведены.
Моя первая идея заключается в следующем:
select
t1.typ,
t1.total,
-- t2.typ,
(select sum(t2.value)
from @t2 t2
where t1.typ = t2.typ
group by typ) as Summed,
case when total = (select sum(t2.value)
from @t2 t2
where t1.typ = t2.typ
group by typ) then 'TRUE' else 'FALSE' end as Result
from @t1 t1
left join @t2 t2 on t2.typ = t1.typ
, но я получаю это
typ|total|Summed|Result
1 |30 |30 |TRUE
1 |30 |30 |TRUE
2 |70 |70 |TRUE
2 |70 |70 |TRUE
3 |99,9 |50 |FALSE
Правильный результат должен выглядеть так:
typ|total|Summed|Result
1 |30 |30 |TRUE
2 |70 |70 |TRUE
3 |99,9 |50 |FALSE
Я был бы рад, чтобы получить ответьте на этот вопрос.
Ваше решение, которое я использовал в конце. Спасибо! –