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

نام تاپیک: مشکل در نوشتن Query

  1. #1
    کاربر دائمی آواتار roxe77
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    گرگان
    سن
    39
    پست
    143

    مشکل در نوشتن Query

    کسی میتونه راحع به در آوردن این query بهم کمک کنه ؟ ناجور لازم دارم


    Ask.jpg

  2. #2
    کاربر دائمی آواتار roxe77
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    گرگان
    سن
    39
    پست
    143

    نقل قول: یه Query !! اعصاب خوردکن

    SELECT  Week ,StartDate,EndDate
    ,(SELECT AVG(VALUE) FROM Activety WHERE AcDate>=StartDate AND AcDate<=EndDate AND ItemID=1)
    FROM ItemAge
    WHERE ItemID=1


    1 2012-01-10 2012-01-16 6.71428571428571
    2 2012-01-17 2012-01-23 4.85714285714286
    3 2012-01-24 2012-01-30 3.8

    این واسه یه ایتم هست حالا اگه واسه دو ایتم رو باهم بخواهیم دربیاریم!؟؟؟!؟

  3. #3

    نقل قول: مشکل در نوشتن Query

    نتیجه ای که میخواهید را دقیق مشخص کنید. در تصویر نتیجه مشخص نشده. همچنین توضیح بدین نتیجه بر چه اساسی بدست می آید.

  4. #4
    کاربر دائمی آواتار cherchil_hra
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    تهران
    پست
    162

    نقل قول: مشکل در نوشتن Query

    اول از همه جدول Activity و ItemAgeWeek رو باهم Join می کنید. من از RIGHT OUTER JOIN به این علت استفاده کردم که تمام هفته هایی که در جدول ItemAgeWeek برای آیتم ها در نظر گرفتی رو بیاره. مثلا برای آیتم شماره دو در هفته سوم مقداری نداری و چون مقدارش null هست صفر میشه.

    شرط Join کردن شما دو مورد میشه :
    1. تساوی ItemID های دو جدول
    2. AcDate، مابین فیلد تاریخ شروع و پایان جدول ItemAgeWeek باشه



    SELECT w.ItemID,
    w.[Week],
    AVG(CAST(ISNULL(ac.value, 0) AS DECIMAL)) AS Average
    FROM Activity AS ac
    RIGHT OUTER JOIN ItemAgeWeek AS w
    ON ac.ItemID = w.ItemID
    AND ac.AcDate BETWEEN w.startDate AND w.EndDate
    GROUP BY
    w.[Week],
    w.ItemID
    ORDER BY
    w.ItemID


    که خروجیش میشه این :

    Activity.jpg

    موفق باشید!

  5. #5

    نقل قول: مشکل در نوشتن Query

    من مطمئن نیستم که کاربر چه نتیجه ای مدنظرش هست چرا که یکسری چیزها با هم در تناقض هستن. مثلا در تصویر فقط دو ستون آمده week و average ولی در query که پست کردن نام سه ستون آمده به غیر از week دو ستون startdate و enddate. و معلوم نشده است که به ازای هر هفته فقط یک مقدار می خواهند یا نه (توجه کنید که در جدول week سه هفته وجود دارد)
    اگر بخواهیم به query که پست شده اتکا کنیم می توان با اندکی اصلاح به نتیجه مطلوب رسید:

    SELECT  Week ,StartDate,EndDate
    ,(SELECT AVG(VALUE) FROM Activety WHERE AcDate>=StartDate AND AcDate<=EndDate AND ItemID=I.ItemID)
    FROM ItemAge I
    WHERE ItemID IN(1, 2);


    اما من این روش را پیشنهاد نمی کنم. روش Join مطلوب تر است.

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

  1. مشکل در نوشتن query
    نوشته شده توسط SRS534 در بخش T-SQL
    پاسخ: 2
    آخرین پست: پنج شنبه 11 آبان 1391, 22:15 عصر
  2. مشکل در نوشتن query
    نوشته شده توسط tempali در بخش T-SQL
    پاسخ: 5
    آخرین پست: یک شنبه 23 مرداد 1390, 13:31 عصر
  3. مشکل در نوشتن pivot query در sql 2000
    نوشته شده توسط tempali در بخش T-SQL
    پاسخ: 7
    آخرین پست: دوشنبه 13 تیر 1390, 16:36 عصر
  4. مشکل در نوشتن یک Query
    نوشته شده توسط saymon در بخش T-SQL
    پاسخ: 2
    آخرین پست: سه شنبه 13 اردیبهشت 1390, 20:09 عصر
  5. مشکل در نوشتن Query
    نوشته شده توسط baabi در بخش T-SQL
    پاسخ: 6
    آخرین پست: یک شنبه 21 اردیبهشت 1382, 17:35 عصر

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

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