spanishtrain
یک شنبه 20 مرداد 1387, 00:30 صبح
نوشته شده توسط spanishtrain
با سلام
جناب ثابتی من در گیر یه پروزه آماری سنگینم که می خوام در اون از فرمول متغییری که توسط کاربر وارد می شود برای ایجاد یک سری آمار متفاوت که هر کدام از یک سری داده خام که همه در یک جدول ریخته شدند، استفاده شود به طور مثال جدول داده های اولیه به شکل زیر
کدداده خام ------سال --------مقدار
10 ---------------1375--------- 100
10--------------- 1376--------- 200
20--------------- 1375--------- 1000
20 ---------------1376 ---------2000
30 ---------------1375---------- 10
30 ---------------1376 ----------20
البته هر داده خام یک نام ومشخصات دیگری دارد که در جدول دیگری ذخیره می شود
من می خوام آماری از جدول بالا بسازم که فرمول (کد10+کد20/کد30)را از کاربر دریافت کند و مقدار هر سال را نظیر به نظیر طبق فرمول کاربر محاسبه کند ودر یک جدول ذخیره کند
البته من خودم از این روش استفاده کردم که با دستور select into مقادیر هر داده خام را در یک جدول موقت جدید ذخیره کردم بعد با استفاده ازفرمول برای ستونهای جداول select جدید زدم ولی این راه قابل پارامتریک شدن برای کاربر نبود از توابع جمعی که برای رکوردهای یک ستون هم با group by استفاده میشه، نمیشه استفاده کرد البته این پروژه قبلا به صورت صفحه گسترده مثل Excel یا spss بوده
توجه داشته باشید که در فرمول فوق هم تعداد عملوندها (مثلاکد10) نامعلومه هم جای عملگرها(+*-/) فقط به چهار عمل اصلی نیازدارم
البته من sp زیرو نوشتم که فقط دوتا از دادههای خام بهش میدم و علامت + در اون ثابت چگون کاری کنم که تعداد پارامترها و علامت بین آنها مثل (+)توسط کاربر معلوم شود
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[SP1]
-- Add the parameters for the stored procedure here
@FI real,
@FJ real
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SETNOCOUNTON;
-- Insert statements for procedure here
SELECT Function1_1.[Year], Function1_1.StatisticsData + Function1_2.StatisticsData AS Expr1, Function1_2.[Year]AS Expr2
FROM dbo.Function1(@FI)AS Function1_1 FULL OUTERJOIN
dbo.Function1(@FJ)AS Function1_2 ON Function1_1.[Year] = Function1_2.[Year]
END
البته Fuction1به صورت زیر که در واقع یک View پارامتریک
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTERFUNCTION [dbo].[Function1]
(
-- Add the parameters for the function here
@SI real
)
RETURNSTABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
SELECTTOP(100)PERCENT [Year], StatisticsData
FROM dbo.TblDATA
WHERE(StatisticsId = @SI)
ORDERBY [Year]
)
ممنون از فروم خوبتون
با سلام
جناب ثابتی من در گیر یه پروزه آماری سنگینم که می خوام در اون از فرمول متغییری که توسط کاربر وارد می شود برای ایجاد یک سری آمار متفاوت که هر کدام از یک سری داده خام که همه در یک جدول ریخته شدند، استفاده شود به طور مثال جدول داده های اولیه به شکل زیر
کدداده خام ------سال --------مقدار
10 ---------------1375--------- 100
10--------------- 1376--------- 200
20--------------- 1375--------- 1000
20 ---------------1376 ---------2000
30 ---------------1375---------- 10
30 ---------------1376 ----------20
البته هر داده خام یک نام ومشخصات دیگری دارد که در جدول دیگری ذخیره می شود
من می خوام آماری از جدول بالا بسازم که فرمول (کد10+کد20/کد30)را از کاربر دریافت کند و مقدار هر سال را نظیر به نظیر طبق فرمول کاربر محاسبه کند ودر یک جدول ذخیره کند
البته من خودم از این روش استفاده کردم که با دستور select into مقادیر هر داده خام را در یک جدول موقت جدید ذخیره کردم بعد با استفاده ازفرمول برای ستونهای جداول select جدید زدم ولی این راه قابل پارامتریک شدن برای کاربر نبود از توابع جمعی که برای رکوردهای یک ستون هم با group by استفاده میشه، نمیشه استفاده کرد البته این پروژه قبلا به صورت صفحه گسترده مثل Excel یا spss بوده
توجه داشته باشید که در فرمول فوق هم تعداد عملوندها (مثلاکد10) نامعلومه هم جای عملگرها(+*-/) فقط به چهار عمل اصلی نیازدارم
البته من sp زیرو نوشتم که فقط دوتا از دادههای خام بهش میدم و علامت + در اون ثابت چگون کاری کنم که تعداد پارامترها و علامت بین آنها مثل (+)توسط کاربر معلوم شود
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[SP1]
-- Add the parameters for the stored procedure here
@FI real,
@FJ real
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SETNOCOUNTON;
-- Insert statements for procedure here
SELECT Function1_1.[Year], Function1_1.StatisticsData + Function1_2.StatisticsData AS Expr1, Function1_2.[Year]AS Expr2
FROM dbo.Function1(@FI)AS Function1_1 FULL OUTERJOIN
dbo.Function1(@FJ)AS Function1_2 ON Function1_1.[Year] = Function1_2.[Year]
END
البته Fuction1به صورت زیر که در واقع یک View پارامتریک
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTERFUNCTION [dbo].[Function1]
(
-- Add the parameters for the function here
@SI real
)
RETURNSTABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
SELECTTOP(100)PERCENT [Year], StatisticsData
FROM dbo.TblDATA
WHERE(StatisticsId = @SI)
ORDERBY [Year]
)
ممنون از فروم خوبتون