ورود

View Full Version : سوال: مشکل در نوشتن سلکت



lord_viper
سه شنبه 04 فروردین 1388, 14:32 عصر
با سلام من 2 تا جدول دارم که هر کدام 2 تا فیلد دارن nam1,num1 و تو جدول 2 هم 2 تا فیلد nam2,num2 که میخواهم با یه سلکت بنویسم که مقدار مجموع num1 رو از num2 کم کنه البته هر 2 group by می شن با num1 و num2
مثلا به این شکل


select nam1,sum(num1) from table1 group by nam1

رو از

select nam2,sum(num2) from table2 group by nam2

کم کنم تو 1 سلکت

siavash_realy
سه شنبه 04 فروردین 1388, 14:56 عصر
اميدوارم درست سؤالت رو فهميده باشم ، ببين اين كارت رو راه ميندازه :
SELECT [Table1],[Table2],([Table1] - [Table2]) AS Answer
From (
SELECT 'Table1' AS Source, SUM(num1) AS Sum FROM Table_1
UNION
SELECT 'Table2' AS Source, SUM(num2) AS Sum FROM Table_2
) AS SourceTable
PIVOT (
SUM (Sum) For Source IN ([Table1],[Table2])
) AS PivotTable

lord_viper
سه شنبه 04 فروردین 1388, 22:27 عصر
ممنون دوست عزیز منضورم خروجی به این شکل هست


select nam1,sum(num1)-sum(num2)

siavash_realy
پنج شنبه 06 فروردین 1388, 14:07 عصر
خوب پس فكر كنم اين مشكلت رو حل كنه :
SELECT Source1.nam1, Source1.Sum_num1, Source2.Sum_num2, Source1.Sum_num1 - Source2.Sum_num2 AS Answer
FROM
(SELECT nam1, SUM(num1) AS Sum_num1 FROM dbo.Table_1 GROUP BY nam1) AS Source1
LEFT OUTER JOIN
(SELECT nam2, SUM(num2) AS Sum_num2 FROM dbo.Table_2 GROUP BY nam2) AS Source2
ON Source1.nam1 = Source2.nam2

فرض رو بر اين گرفتم كه Table_1 نام جدول اولت هستش كه توش فيلدهاي nam1,num1 هستش و Table_2 نام جدول دوم هستش كه توش فيلد nam2,num2 رو داري، جز دو تا اسم Table_1 و Table_2 فكر نكنم احتياج باشه اسم چيز ديگري رو تو اين دستور عوض كني. اميدوارم درست مشكل رو فهميده باشم

siavash_realy
پنج شنبه 06 فروردین 1388, 14:09 عصر
مثل اينكه direction رو تو تايپ درست تنظيم نكردم، دوباره مينويسم :
SELECT Source1.nam1, Source1.Sum_num1, Source2.Sum_num2, Source1.Sum_num1 - Source2.Sum_num2 AS Answer
FROM
(SELECT nam1, SUM(num1) AS Sum_num1 FROM dbo.Table_1 GROUP BY nam1) AS Source1
LEFT OUTER JOIN
(SELECT nam2, SUM(num2) AS Sum_num2 FROM dbo.Table_2 GROUP BY nam2) AS Source2
ON Source1.nam1 = Source2.nam2