PDA

View Full Version : identy در جدول



sh2007
شنبه 11 مهر 1388, 09:20 صبح
دوستان سلام
در حال طراحي يك جدول هستم سوالي برايم پيش آمده اينه كه در جدول دو فيلد مهم هست يكي Years و دومي Row كه Years داده هاي آن سال است مثلا اطلاعاتي را كه امثال ثبت مي كنيم نقدار آن با 1388 برابر است و در سال ديگر 1389 و ... اما نكته مهم اينجاست كه در فيلد Row كه مربوط به رديف داده ها مي باشد در آن مي خواهم يك رديف براي هر ركورد ايجاد كنم مثلا در سال 88 رديف از 1 شروع مي شود تا هرچقدر كه ثبت شد و دوباره در سال 89 رديف از 1 شروع مي شود تا هر چقدر كه ادامه داشت و سالهاي بعد..
اما نكته مهم اينه براي رديف Row مي خواهم خود Sql 2000 رديف بزند يعني identy برابر با Yes باشد كه اتومات يك يك به جلو برود حالا سوال اصلي اينه كه در سال 89 كه رديف بايد از 1 شروع شود چكار كنم كه توسط sql با وجود سال جديد از شماره 1 شروع به دادن آن بكند
دوستان راهي دارند
ممنون

محمد سلیم آبادی
دوشنبه 13 مهر 1388, 11:22 صبح
سلام،

اگر از SQL Server 2005 به بعد استفاده می کنید پیشنهاد من استفاده از تابع Row Number است که البته باید هنگام بازیابی استفاده شود.

یعنی با دستوری شبیه به کد می توانید به خواسته خود برسین:
Row = Row_Number() Over( Partition By Years Order By InsertDate)

البته اگر از این ستون در قیود یا ستون محاسباتی نمی خواهین استفاده کنید این روش می تواند یک راه حل باشد.

samiraamiri
دوشنبه 13 مهر 1388, 12:55 عصر
با سلام
به نظر من می تونید یه function بنویسید که بیشترین عدد در سالی که وارد شده رو بر گردونه اگر پیدا شد که یکی بهش اضافه کنه اما اگه سال پیدا نشد 1 بر گردونه بعد این function رو در formula ی فیلد row فراخونی کنید