PDA

View Full Version : تعریف متغیر در یک عبارت Select



takavar_dez
سه شنبه 26 بهمن 1389, 17:00 عصر
با سلام

من یک عبارت select دارم که تعدادی از فیلدهاش حاصل انجام عملیات محاسباتی روی ستون های جدوله ولی از همین فیلدهای محاسبه شده در جاهای دیگه توی همون عبارت Select استفاده میشه! چطور میشه فیلدهای محاسبه شده رو تو یه متغیر گذاشت تا باز ازشون استفاده کنیم؟

mosini
سه شنبه 26 بهمن 1389, 17:15 عصر
میشه دقیقتر بگی؟مثالی چیزی؟

mosini
سه شنبه 26 بهمن 1389, 17:24 عصر
ببین اگه اون فیلد های محاسبه شده فقط یکبار قرار هست محاسبه بشه و بعدش توی select شما قرار بگیره اون وقت میتونی یه متغیر تغریف کنی و اون مقادیر محاسبه شده را بهش set کنی و بعد حالا اون select ای که توی جاهای مختلف این مقدار رو میخواد توش بکار ببری.
اگه غیر از این باشه باید از function ها استفاده کنی

m.soleimani
سه شنبه 26 بهمن 1389, 17:47 عصر
تعریف متغیر در یک عبارت Select

ببین این بهت کمک می‌کنه

http://www.java2s.com/Code/SQL/Select-Clause/Defineandusevariableinselectclause.htm

takavar_dez
سه شنبه 26 بهمن 1389, 22:30 عصر
میشه دقیقتر بگی؟مثالی چیزی؟
مثلا می خوایم روی جدول T با دو ستون C1 و C2 که هر دو مقدار عدد صحیح دارن یه همچین عبارت Select ی بزنیم:


Select C1,C2,(C1+C2) as C3,((C1+C2)*2) as C4
From T
سوال اینه که آیا میشه کاری کرد که به جای عبارت (C1+C2) که در بخش سوم عبارت Select محاسبه شده یه متغیر قرار بدیم که مقدارش رو داشته باشه و در قسمت چهارم از اون استفاده کنیم؟

mosini
جمعه 06 اسفند 1389, 18:03 عصر
ببین دوست عزیز فکر میکنم این جدول T بیش از یه رکورد داره.میتونی از function استفاده کنی. فکر میکنم استفاده از cursor در sql server بتونه کمکی برات باشه.برو دنبالش ببین میشه اینکارو کرد.دقیقا نمیدونم ولی شاید بشه از طریق cursor که برای کار بر روی تک تک سطر ها هست یه کاری کرد.بازم مطمئن نیستم.بررسی کن ما رو هم بی خبر نزار.

Reza_Yarahmadi
جمعه 06 اسفند 1389, 20:03 عصر
بصورت زیر میتونید اینکار رو انجام بدید

With res as(
SELECT
C1,
C2,
(C1+C2) as C3
FROM
T)
Select
*
,C3 * 2 as C4
From res

فکر میکنم استفاده از cursor در sql server بتونه کمکی برات باشه
بصورت کاملا تجربی توصیه میکنم تا جایی که ممکنه از کرسر استفاده نکنید.