PDA

View Full Version : چه جوری ستون های دو تا جدول رو از هم کم کنم؟



f.nabavi
دوشنبه 30 بهمن 1391, 10:54 صبح
سلام. من یه جدول دارم که امار تصادف جاده ای رو داره نشون میده.یه سری از رکوردها مال امسال هست یه سری مال پارسال. من میخوام اختلاف مجموع تلفات در این دو سال رو به تفکیک روز به دست بیارم. الان اینو نوشتم:
select RIGHT(from_date,2), SUM(traumatic_num)+SUM(dead)+sum(dead_after) as a from dbo.accident where from_date >= '1391-10-01' and to_date <= '1931-11-01' group by RIGHT(from_date,2) )

select RIGHT(from_date,2), SUM(traumatic_num)+SUM(dead)+sum(dead_after) as b from dbo.accident where from_date >= '1390-10-01'and to_date <= '1930-11-01' group by RIGHT(from_date,2)

نمیتونم ستونهای این دو تا رو از هم کم کنم. کمک کنید

mohsen.net
دوشنبه 30 بهمن 1391, 17:01 عصر
می توانی دو تا subquery بنویسی
یا با common table expresoin اول یکی را حساب کنی بعد دومی را که حساب کردی از اولی کم کنی

راه حل سوم هم اینه که نتیجه این دو تا گزارش را بریزی تو دئو تا جدول موقت و اونها را ازهم کم کنی

محمد سلیم آبادی
دوشنبه 30 بهمن 1391, 17:50 عصر
select
t1.from_date,
abs(t1.a-t2.a) as diff
from
(
select
RIGHT(from_date,2) from_date,
SUM(traumatic_num)+SUM(dead)+sum(dead_after) as a
from
dbo.accident
where
from_date >= '1391-10-01' and to_date <= '1931-11-01'
group by
RIGHT(from_date,2)
)t1
inner join
(
select
RIGHT(from_date,2) from_date,
SUM(traumatic_num)+SUM(dead)+sum(dead_after) as b
from
dbo.accident
where
from_date >= '1390-10-01'and to_date <= '1930-11-01'
group by
RIGHT(from_date,2)
)t2
on t1.from_date = t2.from_date;