PDA

View Full Version : اضافه كردن ركورد شمارنده به كوئري سلكت



hamzehsh
چهارشنبه 07 دی 1390, 14:27 عصر
سلام اساتيد
من ميخوام بدونم توي دستورات SQL
دستوري هست كه در كنار كوئري سلكت قرار بديم و شمارنده ركوردها باشه؟
منظورم اين است كه وقتي نتيجه رو نمايش ميده در كنارش يك فيلد اضافه بشه و شماره ركورد را نمايش بده.

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

یوسف زالی
چهارشنبه 07 دی 1390, 14:53 عصر
سلام.
تابع row_number رو استفاده کنید.
مثال:
select row_number() over (order by YourField) as Row, * from YourTBL

hamzehsh
چهارشنبه 07 دی 1390, 15:50 عصر
رئييس جان اينكه شما فرمودي مربوط به نسخه 2005 به بالاست درسته. توي نسخه 2000 هم تابع مشابه داره؟
ميشه اين تابع رو به نسخه 2000 اضافه كرد؟

یوسف زالی
چهارشنبه 07 دی 1390, 17:06 عصر
برای استفاده از ردیف سلکتتون رو در جدولی بریزید که یک فیلد identity اضافه داره. بعد از اون سلکت کنید:
create table #T(ID identity, F1 int, ...) insert into #t select * from TBL select * from #T drop table #T -- sql

hamzehsh
پنج شنبه 08 دی 1390, 13:40 عصر
ممنونم ايده جالبيه.
قبلا اين كار رو امتحان كردم و چون جدول خيلي بزرگه وقتي كه اين كارو انجام ميدهم با خطاي time out expire مواجه ميشوم.
براي همين دنبال يك راه كار ديگر ميگشتم.
البته لازم به ذكره كه سعي كردم كوئري رو هم بزرگترش كنم و كلي شرط هم بهش اضافه كردم ولي باز همون مشكل وجود داره.
تعداد ركوردها چيزي در حدود 30000 تا ميشه و چون تعداد فيلدها هم تقريبا 200 تا هست مشكلم بيشتر شده.

تا وقتي نرم افزارهاي ايراني پيشرفت نكنه مشكلات ما پابرجا باقي خواهد ماند.

یوسف زالی
پنج شنبه 08 دی 1390, 13:47 عصر
دوست من اگر دارید از UI این کار رو می کنید باید TimeOut کانکشن و کامندتون رو ببرید بالا.
این کار کمی وقت گیر تر از شماره ردیف هست اما با بالا بردن تایم اوت می تونید باهاش کنار بیاید.
هر چی باشه شما دارید با نسخه 11 سال پیش کار می کنید.