View Full Version : سوال: به چه شکل توسط Group By چنین چیزی بسازم
mpmsoft
شنبه 12 اردیبهشت 1388, 13:41 عصر
دوستان من یک جدول دارم که هر پولی می گیرم در فیلد Price ثبت می کنم
حالا به کسایی که پول می دم در فیلد Price منفی می زنم مثلا 20000-
حالا می خوام گزارشی بگیرم که در ماه های مختلف چقدر هزینه دریافتی داشتم و چقدر پرداختی
مشکل در تهیه لیست دریافتی ها ندارم و توسط کد زیر این کارو انجام می دم
select left(ddate,7)as 'Date',sum(price) AS Plus
FROM TblArchive
GROUP BY left(ddate,7) order by left(ddate,7) desc
حالا می خوام حساب پرداختی هام هم در یک ستون کنار هر ماه اضافه بشه
می شه منو راهنمایی کنید
حامد مصافی
شنبه 12 اردیبهشت 1388, 15:36 عصر
اگر درست متوجه شده باشم شما باید یک شرط price>0 را به انتهای پرس و جو اضافه کنید.
mpmsoft
یک شنبه 13 اردیبهشت 1388, 10:15 صبح
اگر درست متوجه شده باشم شما باید یک شرط price>0 را به انتهای پرس و جو اضافه کنید.
دوست عزیز بنده می خوام دو تا ستون داشته باشم با دو شرط متفاوت یکی Price > 0 و دیگری Price < 0
برای این منظور به چه شکل باید دستور بالارو تغییر بدم ؟
توسط روشی که شما اشاره کردید می تونم یکی از ستونها رو بدست بیارم یا دریافتی یا پرداختی
حامد مصافی
یک شنبه 13 اردیبهشت 1388, 11:07 صبح
در این صورت این دستورات را امتحان کنید.
select left(ddate,7)as 'Date',sum(price) AS Plus
INTO ##tmp
FROM TblArchive;
select p1 = sum(Price) from ##tmp where Price>0;
select p1 = sum(Price) from ##tmp where Price<0;
drop table ##tmp
SELECT @p1, @p2
mpmsoft
یک شنبه 13 اردیبهشت 1388, 12:27 عصر
دوست عزیز کد شما اجرا نشد من به شکل زیر تغییر دادم ولی باز کار نکرد و خطا داد
select left(ddate,7)as 'Date',sum(price) AS Plus
INTO ##tmp
FROM TblArchive group by left(ddate,7)
declare @p1 cursor
declare @p2 cursor
select p1 = sum(Price) from ##tmp where Price>0;
select p2 = sum(Price) from ##tmp where Price<0;
drop table ##tmp
SELECT @p1, @p2
حامد مصافی
یک شنبه 13 اردیبهشت 1388, 16:34 عصر
به این شکل اصلاح شد، لطفاً مجدداً تست کنید.
select *
INTO ##tmp
FROM TblArchive;
select p1 = sum(Price) from ##tmp where Price>0;
select p1 = sum(Price) from ##tmp where Price<0;
drop table ##tmp
SELECT @p1, @p2
mpmsoft
دوشنبه 14 اردیبهشت 1388, 09:42 صبح
دوست شما لطف می کنید و پاسخ بنده رو می دید
ولی این کد هم کار نکرد
بنده می خوام توسط Group این کارو انجام بدم
N-5-N5
چهارشنبه 16 اردیبهشت 1388, 10:00 صبح
سلام، اگه سوالتون رو درست متوجه شده باشم بايد اين كد رو بنويسيد:
CREATE TABLE #tmpArchive
( DDate varchar (7), Daryaft money, Pardakht money )
INSERT INTO #tmpArchive (DDate, Daryaft)
SELECT LEFT ( ddate , 7 ) , SUM ( price )
FROM TblArchive
WHERE Price > 0
GROUP BY LEFT ( ddate , 7 )
INSERT INTO #tmpArchive (DDate, Pardakht)
SELECT LEFT ( ddate , 7 ) , SUM ( price )
FROM TblArchive
WHERE Price < 0
GROUP BY LEFT ( ddate , 7 )
SELECT DDate , ISNULL ( SUM ( Daryaft ) , 0 ) AS Daryaft , ISNULL ( SUM ( Pardakht ) , 0 ) AS Pardakht
FROM #tmpArchive
GROUP BY DDate
ORDER BY DDate DESC
DROP TABLE #tmpArchive
mpmsoft
چهارشنبه 16 اردیبهشت 1388, 10:19 صبح
ممنون از شما دوست عزیز بله جواب داد سپاسگذارم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.