نمایش نتایج 1 تا 5 از 5

نام تاپیک: Group by با محدودیت روی فیلدهای دیگر

  1. #1

    Group by با محدودیت روی فیلدهای دیگر

    بسم ا...
    با سلام و خسته نباشید.
    من می خوام که یه کوئری به شکل زیر داشته باشم:

    Select S.ID,Sum(S.cost),R.MyDate
    from S as table1,R as table2
    Group by ID
    where S.ID=R.ID and myDate<=D2 and myDate>=D2

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

  2. #2
    Select S.ID,Sum(S.cost),R.MyDate
    from S as table1,R as table2
    Group by ID
    where S.ID=R.ID and myDate<=D2 and myDate>=D2

    Hi,some questions:
    1. What are those aliiase for? you set alias for S and R but never used them.maybe you meant:

    table1 as S,table2 as R

    2.The syntax is wrong due to preceding group by before where clause.
    3.This is a simple join.I recommand using ANSI-92 compatible syntax as:

    S inner join R on S.ID = R.ID for that purpose.

    4.
    myDate<=D2 and myDate>=D2

    Do you mean MyDate = D2? Does D2 hard coded or is a bind variable or...?
    5.A hint for all seasons: Send your DDL to create your test scenario so we can reply you more consciously !
    I think main problem (Ya,this is very frequent on forums! ) is how to select anothre not-in-group by column (here R.MyDate) among the other columns.
    I am looking for your DDLs and then...
    -Best wishes and feel free to mail me: [email]baronc_rampantc@yahoo.ca[/email
    ]

  3. #3
    کاری که شما می خواهید انجام بدید مشکل منطقی داره ! بالاخره توی اون بازه ای که داره قیمت ها جمع بسته میشه بیش از یک تاریخ وجود داره ، حالا انتظار دارید کدومش رو ببینید؟
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  4. #4
    همونطور که در پستهای قبلی اشاره شد بهتره از استاندارد ANSI برای انجام Join استفاده بشه. Query شما از نظر Syntax اشکال داره. در حقیقت چیزی که مد نظرتون هست اینه:

    Select table1.ID,Sum(table1.cost),table2.MyDate
    from table1
    inner join table2
    on table1.ID=table2.ID
    where myDate<=D2 and myDate>=D2
    Group by ID

    ولی table2.MyDate که در Group By شرکت نداره، باعث بروز اشکال خواهد شد بر طبق این قائده:
    تمام فیلدهایی که در قسمت Select قید شده اند ولی در Aggregation شرکت ندارند، میبایست در Group By حضور داشته باشند.
    صرف نظر از این قائده، از نظر منطق هم (که دوستان اشاره کردند) این کار با اشکال مواجه هست. شما Cost رو برای IDهای زیادی جمع میزنید و در نهایت یک عدد برای هر ID بدست میارید. حالا کدوم تاریخ رو برای مجموع قصد دارید نمایش بدین؟
    نزدیکترین Query به هدف شما شاید چنین چیزی باشه (تست نکردم):

    select tmp.*, table2.MyDate from
    (Select table1.ID,Sum(table1.cost)
    from table1
    inner join table2
    on table1.ID=table2.ID
    where myDate<=D2 and myDate>=D2
    Group by ID) tmp
    join table2
    on tmp.ID=table2.ID

  5. #5

    دفتر سرفصل ها

    بسم ا...
    سلام.
    ممنون. منظور منم دقیقا" همین بود. ببینید اصل قضیه از این قراره که من می خوام توی یه برنامه حسابداری دفتر کل یا معین تهیه کنم که شامل کد سرفصل ، جمع مبالغ بستانکاری و بدهکاری سندها بر اساس اون سرفصل ها و تاریخ اسناد می باشد. (جدول سرفصل ها و جدول اسناد دو تا جدول مختلف هستن.) حالا می خوام پارامترهای من محدوده سرفصل ها و محدوده تاریخ اسناد باشه. یعنی می خوام سرجمع حساب هر سرفصل رو از توی جدول اسناد بیرون بکشم و این کارو فقط روی اسنادی انجام بدم که توی اون محدوده تاریخ تعیین شده باشن. مثلا" می خوام سرجمع مبالغ اسنادی که دارای کد سرفصل "بانکها" (تا سرفصل مثلا" "بدهکاران") می باشند و از تاریخ 01/01/1383 تا 01/01/1384 صادر شده اند را نمایش دهم.
    برای محاسبه سرجمع یه کرسر نوشتم اما توی استفاده از یه فیلد بدون شرکت در گروپ بای و تابع اگریگیت موندم. (در واقع به میون اومدن این تاریخه کار منو خراب کرده.)
    می خواستم با یه مثال ساده منظورمو بیان کنم که کلی غلط پلوط از توش در اومد!
    به هر حال از راهنمائیتون ممنون. میرم با نمونه کدی که پیشنهاد دادین کلنجار برم ببینم مشکلم حل میشه یا نه؟
    متشکرم.

تاپیک های مشابه

  1. Top n در Group By
    نوشته شده توسط dkhatibi در بخش SQL Server
    پاسخ: 9
    آخرین پست: شنبه 13 بهمن 1386, 06:19 صبح
  2. Group By روی تاریخ میلادی بصورت شمسی
    نوشته شده توسط merced در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 13
    آخرین پست: جمعه 21 اردیبهشت 1386, 22:10 عصر
  3. group box در وب
    نوشته شده توسط Beyondsoft در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: یک شنبه 02 بهمن 1384, 08:55 صبح
  4. Group by
    نوشته شده توسط حمیدرضاصادقیان در بخش SQL Server
    پاسخ: 2
    آخرین پست: پنج شنبه 03 شهریور 1384, 20:00 عصر
  5. group by
    نوشته شده توسط archi در بخش SQL Server
    پاسخ: 3
    آخرین پست: چهارشنبه 11 آذر 1383, 14:24 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •