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

نام تاپیک: Query

  1. #1

    Query

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


    Select substring(Pt.date1,4,2) as [month],Po.code_k,sum(po.gty) as Tedad,Pa.rdfanbar
    from P_anbar Pa
    inner join P_oriz1 Po on pa.rdfanbar=Po.rdfanbar and Pa.cod_k=Po.Code_k and Pa.cod_v=Po.code_v
    inner join p_otpt pt on pt.code=po.code
    group by Po.code_k,Pa.rdfanbar,substring(Pt.date1,4,2)
    order by code_k,[month]

    حالا کار این query چیه؟
    ببینید در این کوئری من جمع فروشهای کالاهای مختلف رو در هرماه بدست اوردم.
    مثلا فکر کنید کالای x در ماههای 5و6و7 فروش داشته است. با این query همه اونها رو براساس ماه به من نشون میده.
    حالا مشکل اینجاست که این query برای هر ماه یک ردیف در نظر میگیره .یعنی من میخوام هرکالایی رو یک بار بیاره و اگر در هر ماهی هم فروش داشت یک فیلدی در نظر بگیره و در اون عدد جمع در اون ماه رو بنویسه.در اصل نمیخوام برای هرماه بیاد یک ردیف در نظر بگیره.
    الان صورت شکل a1 است که میخوام به شکل a2 باشه.

    حالا باید چه جوری به این شکل تنظیمش کنم؟

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


    with ADOQuery1 do
    begin
    i:=fieldbyname('month').Value;
    case i of
    01:fieldbyname('m1').value:=fieldbyname('tedad').v alue;
    02:fieldbyname('m2').value:=fieldbyname('tedad').v alue;
    03:fieldbyname('m3').value:=fieldbyname('tedad').v alue;
    04:fieldbyname('M4').value:=fieldbyname('tedad').v alue;
    05:fieldbyname('m5').value:=fieldbyname('tedad').v alue;
    06:fieldbyname('m6').value:=fieldbyname('tedad').v alue;
    07:fieldbyname('m7').value:=fieldbyname('tedad').v alue;
    08:fieldbyname('m8').value:=fieldbyname('tedad').v alue;
    09:fieldbyname('m9').value:=fieldbyname('tedad').v alue;
    10:fieldbyname('m10').value:=fieldbyname('tedad'). value;
    11:fieldbyname('m11').value:=fieldbyname('tedad'). value;
    12:fieldbyname('m12').value:=fieldbyname('tedad'). value;
    end;
    end;


    این هم درست کردن شکل ماهها که درست شده ولی اگر یک کالا در چند ماه فروش داشته باشه چند بار کالا رو تکرار میکنه که میخوام در یک ردیف در هرماهی که فروش داشته در ستون مربوطه اونو بنویسه.
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg a1.jpg‏ (31.5 کیلوبایت, 15 دیدار)
    • نوع فایل: jpg a2.jpg‏ (28.1 کیلوبایت, 15 دیدار)

  2. #2
    یک تابع تعریف کن تو دیتابیست که یک پارامتر بگیره (پارامتر ماه) اونوقت مجموع فروش اون ماه رو بده (بدنه تابعت خیلی شبیه همین کدی که نوشتی میشه احتمالا) بعد یک چیزی اینطوری
    میشه

    Select Select GetMonthSum(1), Select GetMonthSum(2), .. from ...

  3. #3
    خوب دوست عزیز این که شما میگی درسته.ولی مشکل اینه که من میخوام نام کالا و کد کالا و نام واحد اونو برگردونم که تابع من باید یک جدول برگردونه که نمیشه از دستور select شما استفاده کرد.
    الان بدنه تابع من کد زیر است.


    CREATE FUNCTION Sefaresh (@m1 int,@m2 int,@m3 int,@m4 int)
    RETURNS @sefaresh Table (code_k varchar(13),Tedad decimal(28,3),Rdf smallint,mo varchar(5))
    AS
    BEGIN
    insert @sefaresh
    Select Po.code_k,sum(po.gty) as Tedad,Pa.rdfanbar as rdfanbar,substring(Pt.date1,4,2) as [month]
    from P_anbar Pa
    inner join P_oriz1 Po on pa.rdfanbar=Po.rdfanbar and Pa.cod_k=Po.Code_k and Pa.cod_v=Po.code_v
    inner join p_otpt pt on pt.code=po.code
    where substring(Pt.date1,4,2)=@m1 or substring(Pt.date1,4,2)=@m2 or substring(Pt.date1,4,2)=@m3 or substring(Pt.date1,4,2)=@m4
    group by Po.code_k,Pa.rdfanbar,substring(Pt.date1,4,2)
    order by code_k

    return
    END


  4. #4
    نقل قول نوشته شده توسط حمیدرضاصادقیان
    خوب دوست عزیز این که شما میگی درسته.ولی مشکل اینه که من میخوام نام کالا و کد کالا و نام واحد اونو برگردونم که تابع من باید یک جدول برگردونه که نمیشه از دستور select شما استفاده کرد.
    چرا نمیشه ؟! ببین یک چیزی میشه مثلا اینطوری :

    Select KalaName, KalaId , ..., GetMonthSum(KalaID, 1), GetMonthSum(KalaID,2),... From KALATABLE


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

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

  1. مشکل گرفتن query با حرف 'ی' ؟
    نوشته شده توسط sasan_vm در بخش SQL Server
    پاسخ: 15
    آخرین پست: پنج شنبه 30 فروردین 1386, 13:18 عصر
  2. the query must be an updateable query
    نوشته شده توسط hamed_bostan در بخش VB.NET
    پاسخ: 2
    آخرین پست: چهارشنبه 08 فروردین 1386, 16:02 عصر
  3. مشکل در ثبت اطلاعات در query
    نوشته شده توسط maisam57 در بخش برنامه نویسی در Delphi
    پاسخ: 4
    آخرین پست: دوشنبه 03 مهر 1385, 09:17 صبح
  4. درخواست یک query
    نوشته شده توسط golagha_program در بخش Access
    پاسخ: 3
    آخرین پست: پنج شنبه 30 شهریور 1385, 12:20 عصر
  5. در مورد SQL و Query لطفاٌ کمک کنید.
    نوشته شده توسط Abbasgholami در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 6
    آخرین پست: دوشنبه 20 شهریور 1385, 13:54 عصر

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

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