View Full Version : بدست آوردن مقادیر بین دو بازه
sg.programmer
دوشنبه 24 بهمن 1390, 19:56 عصر
سلام
یک فیلد از نوع Int دارم مثلا از 1 تا 10 که یک سری اعدا بین این دو مقدار وجود نداره چطوری این اعداد را بدست بیارم
1 2 3 4 5 6 7 8 9 10
مرز پایین و بالا مشخص نباشه
Galawij
دوشنبه 24 بهمن 1390, 20:09 عصر
سلام،
این را امتحان کنید:
WITH Missing (missnum, maxid)
AS
(
SELECT 1 AS missnum, (select max(YourColumn) from YourTB)
UNION ALL
SELECT missnum + 1, maxid FROM Missing
WHERE missnum < maxid
)
SELECT missnum
FROM Missing
LEFT OUTER JOIN YourTB tt on tt.YourColumn = Missing.missnum
WHERE tt.YourColumn is NULL
OPTION (MAXRECURSION 0)
mina_ghorbani
سه شنبه 25 بهمن 1390, 10:05 صبح
براي بدست آوردن اون اعدادي كه وجود ندارن مي تونيد از cursor استفاده كنيد
اين طور كه id ها رو از جدول يكي يكي fetch كنه وو يه متغير به عنوان شمارنده كه از يكي يكي بره بالا و مقايسه كنه بااونايي كه تو جدول هستن اونايي رو كه نداريم برامون چاپ كنه يا يه جا ذخيره كنه
یوسف زالی
سه شنبه 25 بهمن 1390, 10:23 صبح
دوستان استفاده از کرسر "ممنوع"
از روشهای جایگزین استفاده کنید.
sg.programmer
سه شنبه 25 بهمن 1390, 17:22 عصر
تشکر
با کرسر چطوری و چرا ممنوع هست
Galawij
سه شنبه 25 بهمن 1390, 18:03 عصر
با کرسر چطوری و چرا ممنوع هست
کدی که براتون گذاشتم، کاملاً جوابگوی نیاز شما هست!
دلایل عدم استفاده از کرسر:لینک 1 (http://www.barnamenevis.org/showthread.php?215331-%D8%B1%D9%88%D8%B4-%D9%87%D8%A7%DB%8C-set-based-%DA%86%DB%8C%D8%B3%D8%AA%D9%86%D8%AF-%D9%88-%DA%86%D9%87-%DA%A9%D8%A7%D8%A8%D8%B1%D8%AF%DB%8C-%D8%AF%D8%A7%D8%B1%D9%86%D8%AF%D8%9F&highlight=mcts)، لینک 2 (http://barnamenevis.org/showthread.php?214403-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-Cursor-%D8%AF%D8%B1-sql)، لینک 3 (http://www.sql-server-performance.com/2007/cursors/)و ...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.