PDA

View Full Version : کمک برای نوشتن یک تابع



surena_iran2564
دوشنبه 10 آذر 1393, 11:54 صبح
سلام
میخوام تابعی رو بنویسم که ستون Pay_pfDescryption را با استفاده از سه تا ستون دیگه پر کنه.
چند تا نمونه پر شده.
این فانکشن طوری کار کنه که برای مثال جایی که pay_PfId برابر 21 هست و Pay_PfParentId_fk برابر 2، مقدار 2 رو از سطر با pay_PfIdf برابر 2 برداره و با جایی که Pay_PfId برابر 21 هست ادغام کنه و در این سطر مقدار "کارکردی / روزهای کارکرد" رو در Pay_PfDescription قرار بده.
ممنون میشم کمک کنید.
http://upload7.ir/imgs/2014-12/62206811019724317491.jpg (http://upload7.ir/imgs/2014-12/62206811019724317491.jpg)

مرتضی تقدمی
دوشنبه 10 آذر 1393, 14:01 عصر
سلام
تست كنيد:


UPDATE P1
SET Pay_PfDesc = CASE
WHEN P1.Pay_PfParentId_fk <> 0
THEN (
SELECT Pay_pfName
FROM tblPf P2
WHERE P1.Pay_PfParentId_fk = P2.Pay_PfId
AND P1.Pay_PfId <> P2.Pay_PfId
) + '/' + P1.Pay_PfName
ELSE P1.Pay_PfName
END
FROM tblPf P1

موفق باشيد

surena_iran2564
دوشنبه 10 آذر 1393, 15:17 عصر
ممنون
اینجا منظور از tblPf P2 کدوم جدول هست ؟ از کجا اومده این جدول ؟

مرتضی تقدمی
دوشنبه 10 آذر 1393, 17:48 عصر
شما اسم جدولتون رو نگفتید. به همین خاطر من اسم tblPf رو روش گذاشتم! اون P1 و P2 هم Alias (اسم مستعار) هستند.
موفق باشید

pezhvakco
دوشنبه 10 آذر 1393, 17:55 عصر
خواسته شما خیلی بیش از پایه پیدایش این جا
(راهنمایی و آموزش پایه برنامه نویسی و نه پاسخ موردی به پرسش ها و انجام همه یک خواسته)
است .
شاید این بشود

SELECT pay_PfId ,Pay_PfParentId_fk ,Pay_PfName
,(Case When pay_PfId >= 10
Then ((Select Pay_PfName
From [dbo].TableName AS SubTb01
Where SubTb01.pay_PfId = (TbMn.pay_PfId / 10))
+ ' / ' + Pay_PfName)
End) AS NewCol
FROM [dbo].TableName AS TbMn

mehdi.fni
سه شنبه 18 آذر 1393, 10:23 صبح
سلام
فکر میکنم جدول دوستمون یک جدول درختی هست و دستورات فوق فقط دو سطح را جواب میده آیا میشه دستورات را به شکلی نوشت که جواب 411 بشه کسورات/بیمه/تامین اجتماعی(سهم شخص) ؟