PDA

View Full Version : سوال: مانده‌گيري توام با تجزيه مانده بر حسب سال



A.Farzin
سه شنبه 16 مهر 1387, 18:27 عصر
با سلام

من ميخواهم در يك SELECT به كمك aggregate functionsها اقدام به جمع‌گيري و مانده‌گيري كنم. در ضمن لازم دارم تا پس از بدست آمدن مقادير aggregate دوباره اقدام به شكستن مانده برحسب سالهاي مربوط كنم. اين موضوع را در تصوير پيوست نمايش داده‌ام. لطفاً ببينيد. براي انجام آن بنده را از راهنمائي خود بهره‌مند فرمائيد. ممنونم.
آيا اصلاً چنين كاري با SELECT امكانپذير است و يا اينكه بايد اطلاعات را در يك جدول موقت ريخته و با مثلاً يك SP و با دستورات UPDATE، INSERT و يا DELETE آنها را دستكاري كرد و به نتيجه رسيد.

اسكريپتهاي زير، در ساخت جدول مثال استفاده كنيد.

USE [tempdb]
GO
CREATE TABLE [dbo].[Kala](
[sal] [int] NULL,
[KalaCod] [int] NULL,
[input] [int] NULL,
[output] [int] NULL
) ON [PRIMARY]

insert into kala (sal, KalaCod, input, output) values (1384, 1, 35, 17)
insert into kala (sal, KalaCod, input, output) values (1385, 1, 14, 15)
insert into kala (sal, KalaCod, input, output) values (1386, 1, 31, 10)
insert into kala (sal, KalaCod, input, output) values (1384, 2, 35, 17)
insert into kala (sal, KalaCod, input, output) values (1385, 2, 10, 11)
insert into kala (sal, KalaCod, input, output) values (1386, 2, 31, 5)

select * from kala

select sum(input) as sumIn,
sum(output) as SumOu,
sum(input - output) as OnHand
from kala
group by KalaCod
ممنون

رضا عربلو
سه شنبه 16 مهر 1387, 21:04 عصر
این چیزی که دنبالش هستید را گردش تجمیعی می نامند. در اینجا بحث خوبی در موردش شده است.
http://barnamenevis.org/forum/showthread.php?t=109628&highlight=%DA%AF%D8%B1%D8%AF%D8%B4+%D8%AA%D8%AC%D9 %85%DB%8C%D8%B9%DB%8C

A.Farzin
چهارشنبه 17 مهر 1387, 09:50 صبح
این چیزی که دنبالش هستید را گردش تجمیعی می نامند. در اینجا بحث خوبی در موردش شده است.

ضمن تشكر در يك بررسي اجمالي متوجه شدم تمام اين مباحث فقط به بحث مانده‌گيري پرداخته است. البته بررسي دقيقتر را يكي دو ساعت ديگه خواهم داشت.
ولي شايان ذكر است كه خواسته من دو قسمت است:
قسمت اول: مانده‌گيري است كه مشكل چنداني در آن نيست
قسمت دوم: تفكيك مانده برحسب سالهاي مربوط است.
ممنونم

A.Farzin
جمعه 19 مهر 1387, 11:17 صبح
با سلام
جواب سئوالي را كه پرسيده بودم، پيدا كردم.
اين كار به كمك كرسرها انجام شده است.
اسكريپتهاي آن، جهت استفاده دوستان پيوست مي‌گردد.

A.Farzin
دوشنبه 06 آبان 1387, 19:01 عصر
لطفاً فايل ضميمه را ببينيد، اگر به جاي انجام Transactionها به وسيله اجراي دستورات جداگانه، عمل Update يا Delete را از طريق خود cursor انجام دهيم، آيا سرعت اجراي cursor بيشتر نمي‌شود؟