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

نام تاپیک: کمک برای ساختن این مدل گزارش

  1. #1

    کمک برای ساختن این مدل گزارش

    باسلام خدمت عزیزان
    من یک گزارش طبق تصویر زیر میخوام بسازم از دوستان میخوام راهنمایی کنند گزارش از نوع cross-tab باید استفاده کنم ولی مشکلی که هست اینه که میخوام به ازای هر رسته مثلا مستقیم تولیدی تعداد مرد زیر 25 سال سن وتعداد زنها وهمینطور رنج 25-35 سال به تفکیک تعداد زن ومرد را بدست بیارم اطلاعات مربوط به پرسنل که فیلد سن هم داخل اون هست توی یک تیبل بنام personel هست ولی نمیدونم میشه مستقیم این گزارش را ساخت یا از جدولهای کمکی باید استفاده کنم ممنون میشم دوستان راهنمایی کنند چون چند تا گزارش با این فرمت ولی براساس مثلا تحصیلات پرسنل - شغل پرسنل -سابقه پرسنل دارم که یکسان است ممنون میشم کمک کنید
    عکس های ضمیمه عکس های ضمیمه

  2. #2
    مدیر بخش آواتار gilsoft
    تاریخ عضویت
    آبان 1386
    محل زندگی
    رشت
    پست
    753

    نقل قول: کمک برای ساختن این مدل گزارش

    نقل قول نوشته شده توسط مرتضی حمزه ئی مشاهده تاپیک
    باسلام خدمت عزیزان
    من یک گزارش طبق تصویر زیر میخوام بسازم از دوستان میخوام راهنمایی کنند گزارش از نوع cross-tab باید استفاده کنم ولی مشکلی که هست اینه که میخوام به ازای هر رسته مثلا مستقیم تولیدی تعداد مرد زیر 25 سال سن وتعداد زنها وهمینطور رنج 25-35 سال به تفکیک تعداد زن ومرد را بدست بیارم اطلاعات مربوط به پرسنل که فیلد سن هم داخل اون هست توی یک تیبل بنام personel هست ولی نمیدونم میشه مستقیم این گزارش را ساخت یا از جدولهای کمکی باید استفاده کنم ممنون میشم دوستان راهنمایی کنند چون چند تا گزارش با این فرمت ولی براساس مثلا تحصیلات پرسنل - شغل پرسنل -سابقه پرسنل دارم که یکسان است ممنون میشم کمک کنید
    سلام دوست عزیز

    اول اینکه من با ساختار طراحی جداول دیتابیس شما آشنا نیستم و همچنین نمی‌دانم که از چه گزارش‌سازی استفاده می‌کنید ( پیشنهاد من به شما استفاده از گزارس‌ساز Stimulsoft.Report است )

    بنابراین پیشنهاد می‌کنم که با Viewها و Stored Procedureها کار کنید و نهایتا گزارش را از Viewها بسازید.

    موفق باشید .....
    قوانین سایت برنامه نویس [به هیچ عنوان از طریق پیام خصوصی به سوالات پاسخ داده نمی‌شود.]
    حمید محرابی

    چون وا نمیکنی گِره‌ای خود گِره مّشو / ابرو گشاده باش چو دستت گشاده نیست

  3. #3

    نقل قول: کمک برای ساختن این مدل گزارش

    مرسی از جوابتون
    من از Crystal report استفاده میکنم و یک تیبل personel دارم که سن افراد بنام age داخل اون هست وداخل اون هم یک فیلد بنام rasteh حالا با توجه به اطلاعات فوق select ای که بتونم واسه گزارشم استفاده کنم را بگید ممنون میشم

  4. #4
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    ایران
    پست
    372

    نقل قول: کمک برای ساختن این مدل گزارش

    سلام

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

  5. #5

    نقل قول: کمک برای ساختن این مدل گزارش

    سلام دوست عزیز این هم ساختار تیبل
    CREATE TABLE [dbo].[personel](
    [per_no] [int] NOT NULL,
    [name] [nvarchar](15) NULL,
    [family] [nvarchar](20) NULL,
    [id_no] [nvarchar](10) NULL,
    [cod_meli] [varchar](10) NULL,
    [fath_name] [nvarchar](15) NULL,
    [birth_date] [char](10) NULL,
    [isu_plc] [nvarchar](15) NULL,
    [dep_no] [char](10) NULL,
    [job_no] [int] NULL,
    [job_amt] [int] NULL,
    [job_group] [int] NULL,
    [post_no] [int] NULL,
    [degree_no] [int] NULL,
    [course_no] [int] NULL,
    [rasteh] [int] NULL,
    ,[age] [int] NULL]
    [sex] [int] NULL]
    ) ON [PRIMARY]
    ---rasteh=1 مستقیم تولیدی
    ---rasteh=1 غیرمستقیم تولیدی
    ---rasteh=3 خدمات
    ---rasteh=3 مالی اداری
    فیلد age هم مربوط به سن پرسنل است و sex=1 مرد وsex=2 زن است
    ممنون میشم select ای که بشه این query را بسازه بگید

  6. #6
    مدیر بخش آواتار gilsoft
    تاریخ عضویت
    آبان 1386
    محل زندگی
    رشت
    پست
    753

    نقل قول: کمک برای ساختن این مدل گزارش

    سلام مجدد

    فعلا با این Query شروع کنیم .. ببینیم چه میشه :
    SELECT rasteh, CASE			When age <25 then 'Under 25'
    When age between 25 and 35 then '25-35'
    When age between 36 and 45 then '36-45'
    When age between 46 and 55 then '46-55'
    When age > 55 then 'More than 55'
    END as [age_range]
    , Count(1) as [count]
    FROM personel
    GROUP BY CASE
    When age <25 then 'Under 25'
    When age between 25 and 35 then '25-35'
    When age between 36 and 45 then '36-45'
    When age between 46 and 55 then '46-55'
    When age > 55 then 'More than 55'
    END , rasteh
    ORDER BY rasteh, [age_range] ;


    موفق باشید .....
    قوانین سایت برنامه نویس [به هیچ عنوان از طریق پیام خصوصی به سوالات پاسخ داده نمی‌شود.]
    حمید محرابی

    چون وا نمیکنی گِره‌ای خود گِره مّشو / ابرو گشاده باش چو دستت گشاده نیست

  7. #7

    نقل قول: کمک برای ساختن این مدل گزارش

    سلام بینهایت تشکر از جوابتون من هم به همین select شما جنسیتsex را هم اضافه کردم وجواب گرفتم فعلا select مهم بود که انجام شد ولی استاد محترم حالا سوال اینست که چطوری همه سطرها را درقالب یک سطر بیارم که مثلا مستقیم تولیدی مرد وزن زیر 5 سال بعد مرد 5تا10 سال وزن 5 تا 10 سال الی آخر در یک سطر باشد بینهایت ممنونم اگه این قسمت را هم کمک کنید بعنوان مثال خروجی برای یک رسته مستقیم تولیدی بصورت زیر است
    کدرسته ازسن تاسن جنسیت تعداد
    15 25-35 زن 4
    15 25-35 مرد 118
    15 36-45 مرد 282
    15 46-55 مرد 59
    15 More than 55 مرد 3
    15 Under 25 زن 1
    15 Under 25 مرد 5

  8. #8
    مدیر بخش آواتار gilsoft
    تاریخ عضویت
    آبان 1386
    محل زندگی
    رشت
    پست
    753

    نقل قول: کمک برای ساختن این مدل گزارش

    سلام مجدد
    اینم کدی که میخواستی:
    SELECT CASE
    When rasteh = 1 then 'مستقیم تولیدی'
    When rasteh = 2 then 'غیر مستقیم تولیدی'
    When rasteh = 3 then 'خدمات و پشتیبانی'
    When rasteh = 4 then 'مالی - اداری'
    When rasteh = 5 then 'بازرگانی'
    When rasteh = 6 then 'سایر'
    END As
    [Rasteh]
    , age1m --as [کمتر از 25 سال]
    , age1f --as [کمتر از 25 سال]
    , age2m --as [بین 25-35 سال]
    , age2f --as [بین 25-35 سال]
    , age3m --as [بین 36-45 سال]
    , age3f --as [بین 36-45 سال]
    , age4m --as [بین 46-55 سال]
    , age4f --as [بین 46-55 سال]
    , age5m --as [بالای 55 سال]
    , age5f --as [بالای 55 سال]
    FROM (
    SELECT rasteh
    , CASE
    When (sex = 1 and age <25) then 'age1m'
    When (sex = 2 and age <25) then 'age1f'
    When (sex = 1 and age between 25 and 35) then 'age2m'
    When (sex = 2 and age between 25 and 35) then 'age2f'
    When (sex = 1 and age between 36 and 45) then 'age3m'
    When (sex = 2 and age between 36 and 45) then 'age3f'
    When (sex = 1 and age between 46 and 55) then 'age4m'
    When (sex = 2 and age between 46 and 55) then 'age4f'
    When (sex = 1 and age > 55) then 'age5m'
    When (sex = 2 and age > 55) then 'age5f'
    END as [age_range]
    , Count(1) as [count]
    FROM personel
    GROUP BY CASE
    When (sex = 1 and age <25) then 'age1m'
    When (sex = 2 and age <25) then 'age1f'
    When (sex = 1 and age between 25 and 35) then 'age2m'
    When (sex = 2 and age between 25 and 35) then 'age2f'
    When (sex = 1 and age between 36 and 45) then 'age3m'
    When (sex = 2 and age between 36 and 45) then 'age3f'
    When (sex = 1 and age between 46 and 55) then 'age4m'
    When (sex = 2 and age between 46 and 55) then 'age4f'
    When (sex = 1 and age > 55) then 'age5m'
    When (sex = 2 and age > 55) then 'age5f'
    END, rasteh,sex ) tblAge
    PIVOT (max([count])
    For [age_range] in ([age1m], [age1f], [age2m], [age2f], [age3m], [age3f], [age4m], [age4f], [age5m], [age5f])
    ) PvtAges;

    موفق باشید .....
    قوانین سایت برنامه نویس [به هیچ عنوان از طریق پیام خصوصی به سوالات پاسخ داده نمی‌شود.]
    حمید محرابی

    چون وا نمیکنی گِره‌ای خود گِره مّشو / ابرو گشاده باش چو دستت گشاده نیست

  9. #9

    نقل قول: کمک برای ساختن این مدل گزارش

    سلام باتشکر مجدد از زحماتتون عزیزم دستورت را اجرا کردم فقط اشکالش اینه که فیلد رسته را مقدارش null است وتمام سطرها مقدارش null است خروجی بصورت زیر است
    NULL NULL NULL NULL NULL 1 NULL NULL NULL NULL NULL
    NULL NULL NULL NULL NULL NULL NULL 11 NULL 2 NULL
    NULL NULL 1 20 8 22 6 26 6 2 2
    NULL NULL NULL 8 3 22 3 21 1 NULL NULL
    NULL NULL NULL 15 4 50 5 22 NULL 2 NULL
    NULL 5 1 118 4 282 NULL 59 NULL 3 NULL
    NULL NULL NULL 35 13 61 17 56 4 5 NULL
    NULL NULL NULL 40 NULL 119 NULL 35 NULL 3 NULL
    NULL NULL NULL 16 1 41 3 48 NULL 3 NULL
    NULL 1 NULL 31 1 37 NULL 41 NULL 6 NULL
    NULL NULL NULL 14 1 62 1 27 1 5 NULL
    NULL NULL NULL 17 NULL 32 NULL 18 NULL NULL NULL

  10. #10
    مدیر بخش آواتار gilsoft
    تاریخ عضویت
    آبان 1386
    محل زندگی
    رشت
    پست
    753

    Post نقل قول: کمک برای ساختن این مدل گزارش

    نقل قول نوشته شده توسط مرتضی حمزه ئی مشاهده تاپیک
    سلام باتشکر مجدد از زحماتتون عزیزم دستورت را اجرا کردم فقط اشکالش اینه که فیلد رسته را مقدارش null است وتمام سطرها مقدارش null است خروجی بصورت زیر است
    NULL NULL NULL NULL NULL 1 NULL NULL NULL NULL NULL
    NULL NULL NULL NULL NULL NULL NULL 11 NULL 2 NULL
    NULL NULL 1 20 8 22 6 26 6 2 2
    NULL NULL NULL 8 3 22 3 21 1 NULL NULL
    NULL NULL NULL 15 4 50 5 22 NULL 2 NULL
    NULL 5 1 118 4 282 NULL 59 NULL 3 NULL
    NULL NULL NULL 35 13 61 17 56 4 5 NULL
    NULL NULL NULL 40 NULL 119 NULL 35 NULL 3 NULL
    NULL NULL NULL 16 1 41 3 48 NULL 3 NULL
    NULL 1 NULL 31 1 37 NULL 41 NULL 6 NULL
    NULL NULL NULL 14 1 62 1 27 1 5 NULL
    NULL NULL NULL 17 NULL 32 NULL 18 NULL NULL NULL
    سلام مجدد

    چرا فیلد [رسته] مقدارش NULL هست ؟!

    من چندین بار Test کردم ... درست جواب میده
    http://s1.picofile.com/d/8287110118/a1a79823-5fd7-46e2-b8c1-c219ecdd61de/PivotQuery_v2_0.sql
    قوانین سایت برنامه نویس [به هیچ عنوان از طریق پیام خصوصی به سوالات پاسخ داده نمی‌شود.]
    حمید محرابی

    چون وا نمیکنی گِره‌ای خود گِره مّشو / ابرو گشاده باش چو دستت گشاده نیست

  11. #11

    نقل قول: کمک برای ساختن این مدل گزارش

    استاد شرمنده اشکال از من بودبینهایت ممنون از جوابتون و لطفتون ولی من دستور select را با توجه به محدوده کد رسته بصورت زیر نوشتم
    SELECT CASE

    When rasteh_no = 15 then 'مستقیم تولیدی'

    When (rasteh_no = 21 or rasteh_no = 14 or rasteh_no = 16 or rasteh_no = 17) then 'غیر مستقیم تولیدی'

    When (rasteh_no = 19 or rasteh_no = 22) then 'خدمات و پشتیبانی'

    When (rasteh_no= 12 or rasteh_no = 13) then 'مالی - اداری'

    When rasteh_no = 18 then 'بازرگانی'

    When rasteh_no = 11 then 'سایر'

    END As [Rasteh]

    , age1m --as [کمتر از 25 سال]

    , age1f --as [کمتر از 25 سال]

    , age2m --as [بین 25-35 سال]

    , age2f --as [بین 25-35 سال]

    , age3m --as [بین 36-45 سال]

    , age3f --as [بین 36-45 سال]

    , age4m --as [بین 46-55 سال]

    , age4f --as [بین 46-55 سال]

    , age5m --as [بالای 55 سال]

    , age5f --as [بالای 55 سال]

    FROM (

    SELECT rasteh_no

    , CASE

    When (sex = 1 and expr6 <25) then 'age1m'

    When (sex = 2 and expr6 <25) then 'age1f'

    When (sex = 1 and expr6 between 25 and 35) then 'age2m'

    When (sex = 2 and expr6 between 25 and 35) then 'age2f'

    When (sex = 1 and expr6 between 36 and 45) then 'age3m'

    When (sex = 2 and expr6 between 36 and 45) then 'age3f'

    When (sex = 1 and expr6 between 46 and 55) then 'age4m'

    When (sex = 2 and expr6 between 46 and 55) then 'age4f'

    When (sex = 1 and expr6 > 55) then 'age5m'

    When (sex = 2 and expr6 > 55) then 'age5f'

    END as [age_range]

    , Count(1) as [count]

    FROM vwpers1 where vaz=0 and per_no>550000

    GROUP BY CASE

    When (sex = 1 and expr6 <25) then 'age1m'

    When (sex = 2 and expr6 <25) then 'age1f'

    When (sex = 1 and expr6 between 25 and 35) then 'age2m'

    When (sex = 2 and expr6 between 25 and 35) then 'age2f'

    When (sex = 1 and expr6 between 36 and 45) then 'age3m'

    When (sex = 2 and expr6 between 36 and 45) then 'age3f'

    When (sex = 1 and expr6 between 46 and 55) then 'age4m'

    When (sex = 2 and expr6 between 46 and 55) then 'age4f'

    When (sex = 1 and expr6 > 55) then 'age5m'

    When (sex = 2 and expr6 > 55) then 'age5f'

    END, rasteh_no,sex ) tblAge

    PIVOT (max([count])

    For [age_range] in ([age1m], [age1f], [age2m], [age2f], [age3m], [age3f], [age4m], [age4f], [age5m], [age5f])

    ) PvtAges;
    ولی مشکل اینه که در رسته هایی که کد تنها داره مثل مستقیم تولیدی با کد 15 یک رکورد میاره ودرست است ولی اونجایی که کدرسته مثل مالی اداری که میتونه کد 12 یا 13 باشه دوسطر میاره اونرا چکار کنم خروجی بصورت زیر است
    ساير NULL NULL NULL NULL NULL NULL 11 NULL 2 NULL
    مالي - اداري NULL 1 20 8 22 6 26 6 2 2
    مالي - اداري NULL NULL 8 3 22 3 21 1 NULL NULL
    غير مستقيم توليدي NULL NULL 15 4 50 5 22 NULL 2 NULL
    مستقيم توليدي 5 1 118 4 282 NULL 59 NULL 3 NULL
    غير مستقيم توليدي NULL NULL 35 13 61 17 56 4 5 NULL
    غير مستقيم توليدي NULL NULL 40 NULL 119 NULL 35 NULL 3 NULL
    بازرگاني NULL NULL 16 1 41 3 48 NULL 3 NULL
    خدمات و پشتيباني 1 NULL 31 1 37 NULL 41 NULL 6 NULL
    غير مستقيم توليدي NULL NULL 14 1 62 1 27 1 5 NULL

  12. #12
    مدیر بخش آواتار gilsoft
    تاریخ عضویت
    آبان 1386
    محل زندگی
    رشت
    پست
    753

    نقل قول: کمک برای ساختن این مدل گزارش

    نقل قول نوشته شده توسط مرتضی حمزه ئی مشاهده تاپیک
    ولی مشکل اینه که در رسته هایی که کد تنها داره مثل مستقیم تولیدی با کد 15 یک رکورد میاره ودرست است ولی اونجایی که کدرسته مثل مالی اداری که میتونه کد 12 یا 13 باشه دوسطر میاره اونرا چکار کنم خروجی بصورت زیر است
    ساير NULL NULL NULL NULL NULL NULL 11 NULL 2 NULL
    مالي - اداري NULL 1 20 8 22 6 26 6 2 2
    مالي - اداري NULL NULL 8 3 22 3 21 1 NULL NULL
    غير مستقيم توليدي NULL NULL 15 4 50 5 22 NULL 2 NULL
    مستقيم توليدي 5 1 118 4 282 NULL 59 NULL 3 NULL
    غير مستقيم توليدي NULL NULL 35 13 61 17 56 4 5 NULL
    غير مستقيم توليدي NULL NULL 40 NULL 119 NULL 35 NULL 3 NULL
    بازرگاني NULL NULL 16 1 41 3 48 NULL 3 NULL
    خدمات و پشتيباني 1 NULL 31 1 37 NULL 41 NULL 6 NULL
    غير مستقيم توليدي NULL NULL 14 1 62 1 27 1 5 NULL
    سلام مجدد

    اینم ورژن 3 کوئری فوق:
    /* Version 3.0 */


    USE [TestDb]
    GO


    SELECT rasteh As [رسته]
    , age1m As [(کمتر از 25 سال (مرد]
    , age1f As [(کمتر از 25 سال (زن]
    , age2m As [(بین 25-35 سال (مرد]
    , age2f As [(بین 25-35 سال (زن]
    , age3m As [(بین 36-45 سال (مرد]
    , age3f As [(بین 36-45 سال (زن]
    , age4m As [(بین 46-55 سال (مرد]
    , age4f As [(بین 46-55 سال (زن]
    , age5m As [(بالای 55 سال (مرد]
    , age5f As [(بالای 55 سال (زن]
    FROM (
    SELECT CASE
    When rasteh = 1 then 'مستقیم تولیدی'
    When rasteh = 2 then 'غیر مستقیم تولیدی'
    When rasteh = 3 then 'خدمات و پشتیبانی'
    When rasteh = 12 then 'مالی - اداری'
    When rasteh = 13 then 'مالی - اداری'
    When rasteh = 5 then 'بازرگانی'
    When rasteh = 6 then 'سایر'
    END As [Rasteh]
    , CASE
    When (sex = 1 and age <25) then 'age1m'
    When (sex = 2 and age <25) then 'age1f'
    When (sex = 1 and age between 25 and 35) then 'age2m'
    When (sex = 2 and age between 25 and 35) then 'age2f'
    When (sex = 1 and age between 36 and 45) then 'age3m'
    When (sex = 2 and age between 36 and 45) then 'age3f'
    When (sex = 1 and age between 46 and 55) then 'age4m'
    When (sex = 2 and age between 46 and 55) then 'age4f'
    When (sex = 1 and age > 55) then 'age5m'
    When (sex = 2 and age > 55) then 'age5f'
    END As [age_range]
    , Count(1) As [count]
    FROM personel
    GROUP BY CASE
    When (sex = 1 and age <25) then 'age1m'
    When (sex = 2 and age <25) then 'age1f'
    When (sex = 1 and age between 25 and 35) then 'age2m'
    When (sex = 2 and age between 25 and 35) then 'age2f'
    When (sex = 1 and age between 36 and 45) then 'age3m'
    When (sex = 2 and age between 36 and 45) then 'age3f'
    When (sex = 1 and age between 46 and 55) then 'age4m'
    When (sex = 2 and age between 46 and 55) then 'age4f'
    When (sex = 1 and age > 55) then 'age5m'
    When (sex = 2 and age > 55) then 'age5f'
    END
    , CASE
    When rasteh = 1 then 'مستقیم تولیدی'
    When rasteh = 2 then 'غیر مستقیم تولیدی'
    When rasteh = 3 then 'خدمات و پشتیبانی'
    When rasteh = 12 then 'مالی - اداری'
    When rasteh = 13 then 'مالی - اداری'
    When rasteh = 5 then 'بازرگانی'
    When rasteh = 6 then 'سایر'
    END
    , sex ) tblAge
    PIVOT (max([count])
    For [age_range] in ([age1m], [age1f], [age2m], [age2f], [age3m], [age3f], [age4m], [age4f], [age5m], [age5f])
    ) PvtAges;

    امیدوارم با این کوئری مشکل شما حل بشه ( البته اگه بازم سوالی داری بِپُرس .... مشکلی نیست )

    موفق باشید .....
    قوانین سایت برنامه نویس [به هیچ عنوان از طریق پیام خصوصی به سوالات پاسخ داده نمی‌شود.]
    حمید محرابی

    چون وا نمیکنی گِره‌ای خود گِره مّشو / ابرو گشاده باش چو دستت گشاده نیست

  13. #13

    نقل قول: کمک برای ساختن این مدل گزارش

    استاد بینهایت ممنون سپاسگزارم مشکلم حل شد ولی سوالم اینه که چرا با or که توی یک سطر چک میکنیم جواب نمیده وتکراری میده ممنون میشه جهت افزودن اطلاعات است وگرنه شما بینهایت لطف کردید ودر چند مرحله جواب دادید مرسی

  14. #14
    مدیر بخش آواتار gilsoft
    تاریخ عضویت
    آبان 1386
    محل زندگی
    رشت
    پست
    753

    نقل قول: کمک برای ساختن این مدل گزارش

    نقل قول نوشته شده توسط مرتضی حمزه ئی مشاهده تاپیک
    استاد بینهایت ممنون سپاسگزارم مشکلم حل شد ولی سوالم اینه که چرا با or که توی یک سطر چک میکنیم جواب نمیده وتکراری میده ممنون میشه جهت افزودن اطلاعات است وگرنه شما بینهایت لطف کردید ودر چند مرحله جواب دادید مرسی
    سلام مجدد

    لطفا کوئریِ ( کوئری‌ای را که در آن از عملگر OR استفاده کردی ) خودت رو بزار ببینیم مشکلش چیه

    در ضمن ( خواهشاً ) برای تشکر کردن بجای اینکه پست بزنی .. از دگمه‌ی تشکر کردن استفاده کن ....

    موفق باشید .....
    قوانین سایت برنامه نویس [به هیچ عنوان از طریق پیام خصوصی به سوالات پاسخ داده نمی‌شود.]
    حمید محرابی

    چون وا نمیکنی گِره‌ای خود گِره مّشو / ابرو گشاده باش چو دستت گشاده نیست

  15. #15

    نقل قول: کمک برای ساختن این مدل گزارش

    استاد باز هم ممنون یک سوال دارم واسه قسمت دوم عکس که ترتیب برحسب میزان تحصیلات است فیلد مربوط به تحصیلات degree_no هست اگر degree_no=18 دکترا وdegree_no=17 فوق لیسانس وdegree_no=16 لیسانس هست حالا توی این گزارش میخواهیم ببینیم در سال 95 چند تا دکترا داریم همینطور سال 94 تا 89 همینطور تعداد فوق لیسانس ولیسانس در این محدوده سالها توی فایل personel که تمام اطلاعات داخل اون هست یک فیلد داریم بنام vaz که اگر vaz=0 باشه فعال است واگر vaz=1 بازنشسته ویک فیلد داریم بنام rel_date که تاریخ بازنشستگی داخلش هست حالا با توجه به آخرین پست شما من اصلاحات را انجام دادم ولی فقط سال 95 را مقادیر نشون میده لطف میکنید راهنمایی کنید که کجا مشکل داره
    SELECT degree_no As [تحصیلات]

    , expr61m As [سال 1395]

    , expr61f As [سال 1394]

    , expr62m As [سال 1393]

    , expr62f As [سال 1392]

    , expr63m As [سال 1391]

    , expr63f As [سال 1390]

    , expr64m As [سال 1389]

    , expr64f As [سال 1388]

    , expr65m As [سال 1387]

    , expr65f As [سال 1386]

    , expr65m As [سال 1385]

    FROM (

    SELECT CASE

    When degree_no = 18 then 'دکتراومعادل'
    When degree_no = 17 then 'فوق لیسانس'
    When degree_no = 16 then 'لیسانس'
    When degree_no = 15 then 'فوق دیپلم'
    When degree_no = 14 then 'دیپلم'
    When degree_no <14 then 'زیردیپلم'

    END As [degree_no]

    , CASE

    When (vaz=0 ) then 'expr61m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1394')) then 'expr61m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1393')) then 'expr62m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1392')) then 'expr62f'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1391')) then 'expr63m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1390')) then 'expr63f'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1389')) then 'expr64m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1388')) then 'expr64f'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1387')) then 'expr65m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1386')) then 'expr65f'



    END As [expr6_range]

    , Count(1) As [count]

    FROM vwpers1 where vaz=0 and per_no>600000

    GROUP BY CASE

    When (vaz=0 ) then 'expr61m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1394')) then 'expr61m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1393')) then 'expr62m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1392')) then 'expr62f'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1391')) then 'expr63m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1390')) then 'expr63f'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1389')) then 'expr64m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1388')) then 'expr64f'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1387')) then 'expr65m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1386')) then 'expr65f'


    END

    , CASE

    When degree_no = 18 then 'دکتراومعادل'
    When degree_no = 17 then 'فوق لیسانس'
    When degree_no = 16 then 'لیسانس'
    When degree_no = 15 then 'فوق دیپلم'
    When degree_no = 14 then 'دیپلم'
    When degree_no <14 then 'زیردیپلم'

    END

    , sex ) tblexpr6

    PIVOT (max([count])

    For [expr6_range] in ([expr61m], [expr61f], [expr62m], [expr62f], [expr63m], [expr63f], [expr64m], [expr64f], [expr65m], [expr65f])

    ) Pvtexpr6s;

  16. #16
    مدیر بخش آواتار gilsoft
    تاریخ عضویت
    آبان 1386
    محل زندگی
    رشت
    پست
    753

    نقل قول: کمک برای ساختن این مدل گزارش

    نقل قول نوشته شده توسط مرتضی حمزه ئی مشاهده تاپیک
    استاد باز هم ممنون یک سوال دارم واسه قسمت دوم عکس که ترتیب برحسب میزان تحصیلات است فیلد مربوط به تحصیلات degree_no هست اگر degree_no=18 دکترا وdegree_no=17 فوق لیسانس وdegree_no=16 لیسانس هست حالا توی این گزارش میخواهیم ببینیم در سال 95 چند تا دکترا داریم همینطور سال 94 تا 89 همینطور تعداد فوق لیسانس ولیسانس در این محدوده سالها توی فایل personel که تمام اطلاعات داخل اون هست یک فیلد داریم بنام vaz که اگر vaz=0 باشه فعال است واگر vaz=1 بازنشسته ویک فیلد داریم بنام rel_date که تاریخ بازنشستگی داخلش هست حالا با توجه به آخرین پست شما من اصلاحات را انجام دادم ولی فقط سال 95 را مقادیر نشون میده لطف میکنید راهنمایی کنید که کجا مشکل داره
    SELECT degree_no As [تحصیلات]

    , expr61m As [سال 1395]

    , expr61f As [سال 1394]

    , expr62m As [سال 1393]

    , expr62f As [سال 1392]

    , expr63m As [سال 1391]

    , expr63f As [سال 1390]

    , expr64m As [سال 1389]

    , expr64f As [سال 1388]

    , expr65m As [سال 1387]

    , expr65f As [سال 1386]

    , expr65m As [سال 1385]

    FROM (

    SELECT CASE

    When degree_no = 18 then 'دکتراومعادل'
    When degree_no = 17 then 'فوق لیسانس'
    When degree_no = 16 then 'لیسانس'
    When degree_no = 15 then 'فوق دیپلم'
    When degree_no = 14 then 'دیپلم'
    When degree_no <14 then 'زیردیپلم'

    END As [degree_no]

    , CASE

    When (vaz=0 ) then 'expr61m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1394')) then 'expr61m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1393')) then 'expr62m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1392')) then 'expr62f'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1391')) then 'expr63m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1390')) then 'expr63f'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1389')) then 'expr64m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1388')) then 'expr64f'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1387')) then 'expr65m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1386')) then 'expr65f'



    END As [expr6_range]

    , Count(1) As [count]

    FROM vwpers1 where vaz=0 and per_no>600000

    GROUP BY CASE

    When (vaz=0 ) then 'expr61m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1394')) then 'expr61m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1393')) then 'expr62m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1392')) then 'expr62f'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1391')) then 'expr63m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1390')) then 'expr63f'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1389')) then 'expr64m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1388')) then 'expr64f'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1387')) then 'expr65m'

    When ( vaz=0 or ( vaz=1 and substring(rel_date ,1,4)>'1386')) then 'expr65f'


    END

    , CASE

    When degree_no = 18 then 'دکتراومعادل'
    When degree_no = 17 then 'فوق لیسانس'
    When degree_no = 16 then 'لیسانس'
    When degree_no = 15 then 'فوق دیپلم'
    When degree_no = 14 then 'دیپلم'
    When degree_no <14 then 'زیردیپلم'

    END

    , sex ) tblexpr6

    PIVOT (max([count])

    For [expr6_range] in ([expr61m], [expr61f], [expr62m], [expr62f], [expr63m], [expr63f], [expr64m], [expr64f], [expr65m], [expr65f])

    ) Pvtexpr6s;
    سلام مجدد
    اینم کوئری مورد نظر:

    SELECT [Degree_no]
    ,Y86 As [1386]
    ,Y87 As [1387]
    ,Y88 As [1388]
    ,Y89 As [1389]
    ,Y90 As [1390]
    ,Y91 As [1391]
    ,Y92 As [1392]
    ,Y93 As [1393]
    ,Y94 As [1394]
    ,Y95 As [1395]
    FROM (
    SELECT
    CASE
    When degree_no = 18 then 'دکترا و معادل'
    When degree_no = 17 then 'فوق لیسانس'
    When degree_no = 16 then 'لیسانس'
    When degree_no = 15 then 'فوق دیپلم'
    When degree_no = 14 then 'دیپلم'
    When degree_no < 14 then 'زیر دیپلم'
    END As [Degree_no]
    ,CASE
    When SubString(rel_date,1,4) = '1386' Then 'Y86'
    When SubString(rel_date,1,4) = '1387' Then 'Y87'
    When SubString(rel_date,1,4) = '1388' Then 'Y88'
    When SubString(rel_date,1,4) = '1389' Then 'Y89'
    When SubString(rel_date,1,4) = '1390' Then 'Y90'
    When SubString(rel_date,1,4) = '1391' Then 'Y91'
    When SubString(rel_date,1,4) = '1392' Then 'Y92'
    When SubString(rel_date,1,4) = '1393' Then 'Y93'
    When SubString(rel_date,1,4) = '1394' Then 'Y94'
    When SubString(rel_date,1,4) = '1395' Then 'Y95'
    END As [Years]
    ,Count(1) As [count]
    FROM vwpers1 a
    WHERE vaz=0 and per_no > 100
    GROUP BY [degree_no], SubString (rel_date,1,4)
    ) Tbl1
    PIVOT (Max([count])
    For [Years] in ([Y86],[Y87],[Y88],[Y89],[Y90],[Y91],[Y92],[Y93],[Y94],[Y95])
    ) PVT



    موفق باشید .....
    قوانین سایت برنامه نویس [به هیچ عنوان از طریق پیام خصوصی به سوالات پاسخ داده نمی‌شود.]
    حمید محرابی

    چون وا نمیکنی گِره‌ای خود گِره مّشو / ابرو گشاده باش چو دستت گشاده نیست

  17. #17

    نقل قول: کمک برای ساختن این مدل گزارش

    عزیز از اینکه حوصله بخرج میدی وزحمت جوابگویی میکشی بینهایت سپاسگزارم ولی دستوری که نوشتی تعداد افراد بازنشسته توی اون سال را نشون میده یعنی مثلا 10 نفر کارشناس توی سال 94 رفتند من میخوام اونهایی که تو سال 94 کارشناس بودن را داشته باشم اونهایی کسایی هستند که تاریخ rel_date='' یا (vaz=1 and substring(rel_date,1,4)>'1394') که من این ترکیب را مینویسم ولی جواب نمیده فقط سال اول 86 را درست جواب میده بقیه null هست لطف میکنید کمک کنید دستورم هم دستور زیر است دلیل اینکه واسه سال 95 شرط vaz=0 گذاشتم چون کسانی که فعال باشند vza=0 است وفقط این شرط را واسه سال 95 گذاشتم بازهم شما راهنمایی کنید که درست است یاخیر وجالبه که فقط سال 86 اعداد دقیق است یعنی کامل میاره ولی واسه سال 95 تعداد کسر شده های هریک از مقاطع تحصیلی را میاره
    SELECT [Degree_no]

    ,Y86 As [1386]

    ,Y87 As [1387]

    ,Y88 As [1388]

    ,Y89 As [1389]

    ,Y90 As [1390]

    ,Y91 As [1391]

    ,Y92 As [1392]

    ,Y93 As [1393]

    ,Y94 As [1394]

    ,Y95 As [1395]

    FROM (

    SELECT

    CASE

    When degree_no = 18 then 'دکترا و معادل'

    When degree_no = 17 then 'فوق لیسانس'

    When degree_no = 16 then 'لیسانس'

    When degree_no = 15 then 'فوق دیپلم'

    When degree_no = 14 then 'دیپلم'

    When degree_no < 14 then 'زیر دیپلم'

    END As [Degree_no]

    ,CASE

    When ((SubString(rel_date,1,4)='' ) or (vaz=1 and SubString(rel_date,1,4) > '1386')) Then 'Y86'

    When ((SubString(rel_date,1,4)='' ) or (vaz=1 and SubString(rel_date,1,4) > '1387')) Then 'Y87'

    When ((SubString(rel_date,1,4)='' ) or (vaz=1 and SubString(rel_date,1,4) > '1388')) Then 'Y88'

    When ((SubString(rel_date,1,4)='' ) or (vaz=1 and SubString(rel_date,1,4) > '1389')) Then 'Y89'

    When ((SubString(rel_date,1,4)='' ) or (vaz=1 and SubString(rel_date,1,4) > '1390')) Then 'Y90'

    When ((SubString(rel_date,1,4)='' ) or (vaz=1 and SubString(rel_date,1,4) > '1391')) Then 'Y91'

    When ((SubString(rel_date,1,4)='' ) or (vaz=1 and SubString(rel_date,1,4) > '1392')) Then 'Y92'

    When ((SubString(rel_date,1,4)='' ) or (vaz=1 and SubString(rel_date,1,4) > '1393')) Then 'Y93'

    When ((SubString(rel_date,1,4)='' ) or (vaz=1 and SubString(rel_date,1,4) > '1394')) Then 'Y94'

    When vaz=0 Then 'Y95'

    END As [Years]

    ,Count(1) As [count]

    FROM vwpers1 a

    WHERE vaz=0 and per_no > 100

    GROUP BY [degree_no], SubString (rel_date,1,4),vaz

    ) Tbl1

    PIVOT (Max([count])

    For [Years] in ([Y86],[Y87],[Y88],[Y89],[Y90],[Y91],[Y92],[Y93],[Y94],[Y95])

    ) PVT

  18. #18
    مدیر بخش آواتار gilsoft
    تاریخ عضویت
    آبان 1386
    محل زندگی
    رشت
    پست
    753

    نقل قول: کمک برای ساختن این مدل گزارش

    سلام مجدد

    دوست عزیز تا غروب به من اجازه بده ( که من یه کم تمرکزکنم ) .. اونم برای شما حل می‌کنم ....

    منتظر باشید .....
    قوانین سایت برنامه نویس [به هیچ عنوان از طریق پیام خصوصی به سوالات پاسخ داده نمی‌شود.]
    حمید محرابی

    چون وا نمیکنی گِره‌ای خود گِره مّشو / ابرو گشاده باش چو دستت گشاده نیست

  19. #19
    مدیر بخش آواتار gilsoft
    تاریخ عضویت
    آبان 1386
    محل زندگی
    رشت
    پست
    753

    Question نقل قول: کمک برای ساختن این مدل گزارش

    سلام مجدد

    شما اول بفرما که: هنگامیکه فیلد vaz برابر 0 باشه .. فیلد rel_date خالی است یا مقدار داره ؟ .. یعنی :


    IF vaz = 0 THEN rel_date = ''
    IF vaz = 1 THEN rel_date = '1395/01/01'
    اگه همچین چیزی باشه .. کوئری شما درست اجرا نمیشه !! ( باید در صورت صفر بودن فیلد vaz .. فیلد rel_date هم مقدار داشته باشه ) چون SQL از کجا بفهمه که اونهایی که فعالند .. در چه سالی فعال هستند ؟!

    بنابراین ما باید حداقل یک فیلد با مقدار Year در هر رکورد ( برای فعالین ) داشته باشیم ....

    امیدوارم که درست توضیح داده باشم ... ( اگه نامفهوم بود .. جوری دیگر بحث رو ادامه میدیم )
    قوانین سایت برنامه نویس [به هیچ عنوان از طریق پیام خصوصی به سوالات پاسخ داده نمی‌شود.]
    حمید محرابی

    چون وا نمیکنی گِره‌ای خود گِره مّشو / ابرو گشاده باش چو دستت گشاده نیست

  20. #20

    نقل قول: کمک برای ساختن این مدل گزارش

    نقل قول نوشته شده توسط gilsoft مشاهده تاپیک
    سلام مجدد

    شما اول بفرما که: هنگامیکه فیلد vaz برابر 0 باشه .. فیلد rel_date خالی است یا مقدار داره ؟ .. یعنی :


    IF vaz = 0 THEN rel_date = ''
    IF vaz = 1 THEN rel_date = '1395/01/01'
    اگه همچین چیزی باشه .. کوئری شما درست اجرا نمیشه !! ( باید در صورت صفر بودن فیلد vaz .. فیلد rel_date هم مقدار داشته باشه ) چون SQL از کجا بفهمه که اونهایی که فعالند .. در چه سالی فعال هستند ؟!

    بنابراین ما باید حداقل یک فیلد با مقدار Year در هر رکورد ( برای فعالین ) داشته باشیم ....

    امیدوارم که درست توضیح داده باشم ... ( اگه نامفهوم بود .. جوری دیگر بحث رو ادامه میدیم )
    استاد مرسی از پیگیری وجوابتون
    عزیز ما دوفیلد داریم یکی emp_date که تاریخ استخدام است ویکی rel_date که تاریخ کسر از آمار است اگر vaz=1 باشد پس rel_date<>'' است وتاریخ کسر از آمار داخل اون هست اگه vaz=0 پس rel_date='' هست
    حالا واسه تعدادکارشناسان مثلا سال 91 باید ببینیم که rel_date='' و همچنین91=<(substring(emp_date,1,4 این یعنی کارشناس هست وکسراز آمار نیست وقطعا سال 91 جزو کارشناسان است حالا ممنون میشم کمک کنید سپاسگزارم چون query قبلی جواب نداد

  21. #21
    مدیر بخش آواتار gilsoft
    تاریخ عضویت
    آبان 1386
    محل زندگی
    رشت
    پست
    753

    نقل قول: کمک برای ساختن این مدل گزارش

    نقل قول نوشته شده توسط مرتضی حمزه ئی مشاهده تاپیک
    استاد مرسی از پیگیری وجوابتون
    عزیز ما دوفیلد داریم یکی emp_date که تاریخ استخدام است ویکی rel_date که تاریخ کسر از آمار است اگر vaz=1 باشد پس rel_date<>'' است وتاریخ کسر از آمار داخل اون هست اگه vaz=0 پس rel_date='' هست
    حالا واسه تعدادکارشناسان مثلا سال 91 باید ببینیم که rel_date='' و همچنین91=<(substring(emp_date,1,4 این یعنی کارشناس هست وکسراز آمار نیست وقطعا سال 91 جزو کارشناسان است حالا ممنون میشم کمک کنید سپاسگزارم چون query قبلی جواب نداد
    سلام مجدد

    اینم آخرین تغییرات کوئری:
    SELECT 
    [Degree_no]
    ,Y86 As [1386]
    ,Y87 As [1387]
    ,Y88 As [1388]
    ,Y89 As [1389]
    ,Y90 As [1390]
    ,Y91 As [1391]
    ,Y92 As [1392]
    ,Y93 As [1393]
    ,Y94 As [1394]
    ,Y95 As [1395]
    FROM (
    SELECT
    CASE
    When degree_no = 18 then 'دکترا و معادل'
    When degree_no = 17 then 'فوق لیسانس'
    When degree_no = 16 then 'لیسانس'
    When degree_no = 15 then 'فوق دیپلم'
    When degree_no = 14 then 'دیپلم'
    When degree_no < 14 then 'زیر دیپلم'
    END As [Degree_no]
    ,CASE
    When ISNULL(emp_date, SubString(rel_date,1,4)) = '1386' Then 'Y86'
    When ISNULL(emp_date, SubString(rel_date,1,4)) = '1387' Then 'Y87'
    When ISNULL(emp_date, SubString(rel_date,1,4)) = '1388' Then 'Y88'
    When ISNULL(emp_date, SubString(rel_date,1,4)) = '1389' Then 'Y89'
    When ISNULL(emp_date, SubString(rel_date,1,4)) = '1390' Then 'Y90'
    When ISNULL(emp_date, SubString(rel_date,1,4)) = '1391' Then 'Y91'
    When ISNULL(emp_date, SubString(rel_date,1,4)) = '1392' Then 'Y92'
    When ISNULL(emp_date, SubString(rel_date,1,4)) = '1393' Then 'Y93'
    When ISNULL(emp_date, SubString(rel_date,1,4)) = '1394' Then 'Y94'
    When ISNULL(emp_date, SubString(rel_date,1,4)) = '1395' Then 'Y95'
    END As [Years]
    ,Count(1) As [count]
    FROM vwpers1 a
    WHERE vaz=1 OR vaz=0
    GROUP BY [degree_no] , ISNULL(emp_date, SubString(rel_date,1,4))
    ) Tbl1
    PIVOT (Max([count])
    For [Years] in ([Y86], [Y87], [Y88], [Y89], [Y90], [Y91], [Y92], [Y93], [Y94], [Y95])
    ) PVT
    امیدوارم با این کوئری مشکل شما برطرف بشه ( اما بازم سئوالی داشتی بپرس .. دوست من )

    موفق باشید .....
    قوانین سایت برنامه نویس [به هیچ عنوان از طریق پیام خصوصی به سوالات پاسخ داده نمی‌شود.]
    حمید محرابی

    چون وا نمیکنی گِره‌ای خود گِره مّشو / ابرو گشاده باش چو دستت گشاده نیست

  22. #22

    نقل قول: کمک برای ساختن این مدل گزارش

    استاد عزیز بینهایت تشکر ولی متاسفانه query آخری که نوشتی همه سطرها مقدار null برمیگردونه استاد emp_date تاریخ استخدام است واگر کسی کسرازآمار بشه یعنی vaz=1 میشه وrel_date<>'' و تاریخ استخدام هیچوقت null نیست وتمام افرادی که داخل فایل هستند emp_date آنها پراست من query شما را بصورت زیر اصلاح کردم ولی فقط سال 95 جواب دارد وتعداد درست است ولی سالهای قبل را مقدار null برمیگردونه ممنون میشه دوباره راهنمایی کنی من مبنا را براین اساس گذاشتم که مثلا در سال 91 یا باید vaz=0 باشد وتاریخ استخدام آن کوچکتر از 91 باشه یا اینکه کسر ازآمار شده یعنی vaz=1 و rel_date=91 ببخشید چون خودتون فرمودید اگه درست نشد مزاحمتون بشم مرسی
    SELECT degree_no As [تحصیلات]

    , expr61m As [سال 1395]

    , expr61f As [سال 1394]

    , expr62m As [سال 1393]

    , expr62f As [سال 1392]

    , expr63m As [سال 1391]

    , expr63f As [سال 1390]

    , expr64m As [سال 1389]

    , expr64f As [سال 1388]

    , expr65m As [سال 1387]

    , expr65f As [سال 1386]

    , expr65m As [سال 1385]

    FROM (

    SELECT CASE

    When degree_no = 18 then 'دکتراومعادل'
    When degree_no = 17 then 'فوق لیسانس'
    When degree_no = 16 then 'لیسانس'
    When degree_no = 15 then 'فوق دیپلم'
    When degree_no = 14 then 'دیپلم'
    When degree_no <14 then 'زیردیپلم'

    END As [degree_no]

    , CASE
    When ( vaz=0 and substring(emp_date ,1,4)<='1395') then 'expr61m'

    When (( vaz=1 and substring(rel_date ,1,4)='1394') or (vaz=0 and substring(emp_date ,1,4)<='1394')) then 'expr61m'

    When ((vaz=1 and substring(rel_date ,1,4)='1393') or (vaz=0 and substring(emp_date ,1,4)<='1393')) then 'expr62m'

    When ((vaz=1 and substring(rel_date ,1,4)='1392') or (vaz=0 and substring(emp_date ,1,4)<='1392')) then 'expr62f'

    When ((vaz=1 and substring(rel_date ,1,4)='1391') or (vaz=0 and substring(emp_date ,1,4)<='1391')) then 'expr63m'

    When ((vaz=1 and substring(rel_date ,1,4)='1390') or (vaz=0 and substring(emp_date ,1,4)<='1390')) then 'expr63f'

    When ((vaz=1 and substring(rel_date ,1,4)='1389') or (vaz=0 and substring(emp_date ,1,4)<='1389')) then 'expr64m'

    When ((vaz=1 and substring(rel_date ,1,4)='1388') or (vaz=0 and substring(emp_date ,1,4)<='1388')) then 'expr64f'

    When ((vaz=1 and substring(rel_date ,1,4)='1387') or (vaz=0 and substring(emp_date ,1,4)<='1387')) then 'expr65m'

    When ((vaz=1 and substring(rel_date ,1,4)='1386') or (vaz=0 and substring(emp_date ,1,4)<='1386')) then 'expr65f'



    END As [expr6_range]

    , Count(1) As [count]

    FROM vwpers1 where vaz=0 and per_no>600000

    GROUP BY CASE

    When ( vaz=0 and substring(emp_date ,1,4)<='1395') then 'expr61m'

    When (( vaz=1 and substring(rel_date ,1,4)='1394') or (vaz=0 and substring(emp_date ,1,4)<='1394')) then 'expr61m'

    When ((vaz=1 and substring(rel_date ,1,4)='1393') or (vaz=0 and substring(emp_date ,1,4)<='1393')) then 'expr62m'

    When ((vaz=1 and substring(rel_date ,1,4)='1392') or (vaz=0 and substring(emp_date ,1,4)<='1392')) then 'expr62f'

    When ((vaz=1 and substring(rel_date ,1,4)='1391') or (vaz=0 and substring(emp_date ,1,4)<='1391')) then 'expr63m'

    When ((vaz=1 and substring(rel_date ,1,4)='1390') or (vaz=0 and substring(emp_date ,1,4)<='1390')) then 'expr63f'

    When ((vaz=1 and substring(rel_date ,1,4)='1389') or (vaz=0 and substring(emp_date ,1,4)<='1389')) then 'expr64m'

    When ((vaz=1 and substring(rel_date ,1,4)='1388') or (vaz=0 and substring(emp_date ,1,4)<='1388')) then 'expr64f'

    When ((vaz=1 and substring(rel_date ,1,4)='1387') or (vaz=0 and substring(emp_date ,1,4)<='1387')) then 'expr65m'

    When ((vaz=1 and substring(rel_date ,1,4)='1386') or (vaz=0 and substring(emp_date ,1,4)<='1386')) then 'expr65f'

    END

    , CASE

    When degree_no = 18 then 'دکتراومعادل'
    When degree_no = 17 then 'فوق لیسانس'
    When degree_no = 16 then 'لیسانس'
    When degree_no = 15 then 'فوق دیپلم'
    When degree_no = 14 then 'دیپلم'
    When degree_no <14 then 'زیردیپلم'

    END

    , sex ) tblexpr6

    PIVOT (max([count])

    For [expr6_range] in ([expr61m], [expr61f], [expr62m], [expr62f], [expr63m], [expr63f], [expr64m], [expr64f], [expr65m], [expr65f])

    ) Pvtexpr6s;

  23. #23
    مدیر بخش آواتار gilsoft
    تاریخ عضویت
    آبان 1386
    محل زندگی
    رشت
    پست
    753

    Post نقل قول: کمک برای ساختن این مدل گزارش

    سلام مجدد

    دوست عزیز اگه برات امکان داره یه چندتا رکورد از جدول مورد نظر رو بصورت اکسل ( و یا بصورت Insert Query ) برام بزار .. تا من روی دیتای واقعی کار کنم ....

    یکی از مشکلاتی که باعث طول کشیدن حل مسئله شده .. اینه که من به دیتای واقعی دسترسی ندارم ....

    منتظرم ....
    قوانین سایت برنامه نویس [به هیچ عنوان از طریق پیام خصوصی به سوالات پاسخ داده نمی‌شود.]
    حمید محرابی

    چون وا نمیکنی گِره‌ای خود گِره مّشو / ابرو گشاده باش چو دستت گشاده نیست

  24. #24
    مدیر بخش آواتار gilsoft
    تاریخ عضویت
    آبان 1386
    محل زندگی
    رشت
    پست
    753

    نقل قول: کمک برای ساختن این مدل گزارش

    سلام مجدد
    اینم کوئری جدید:



    SELECT degree_no As [تحصیلات]
    , y1395 As [سال 1395]
    , y1394 As [سال 1394]
    , y1393 As [سال 1393]
    , y1392 As [سال 1392]
    , y1391 As [سال 1391]
    , y1390 As [سال 1390]
    , y1389 As [سال 1389]
    , y1388 As [سال 1388]
    , y1387 As [سال 1387]
    , y1386 As [سال 1386]
    FROM (
    SELECT CASE
    When degree_no = 18 then 'دکتراومعادل'
    When degree_no = 17 then 'فوق لیسانس'
    When degree_no = 16 then 'لیسانس'
    When degree_no = 15 then 'فوق دیپلم'
    When degree_no = 14 then 'دیپلم'
    When degree_no < 14 then 'زیردیپلم'
    END As [Degree_no]
    , CASE
    When ((vaz=1 and substring(rel_date ,1,4)='1386') OR (vaz=0 and substring(emp_date ,1,4)<='1386')) then 'y1386'
    When ((vaz=1 and substring(rel_date ,1,4)='1387') OR (vaz=0 and substring(emp_date ,1,4)<='1387')) then 'y1387'
    When ((vaz=1 and substring(rel_date ,1,4)='1388') OR (vaz=0 and substring(emp_date ,1,4)<='1388')) then 'y1388'
    When ((vaz=1 and substring(rel_date ,1,4)='1389') OR (vaz=0 and substring(emp_date ,1,4)<='1389')) then 'y1389'
    When ((vaz=1 and substring(rel_date ,1,4)='1390') OR (vaz=0 and substring(emp_date ,1,4)<='1390')) then 'y1390'
    When ((vaz=1 and substring(rel_date ,1,4)='1391') OR (vaz=0 and substring(emp_date ,1,4)<='1391')) then 'y1391'
    When ((vaz=1 and substring(rel_date ,1,4)='1392') OR (vaz=0 and substring(emp_date ,1,4)<='1392')) then 'y1392'
    When ((vaz=1 and substring(rel_date ,1,4)='1393') OR (vaz=0 and substring(emp_date ,1,4)<='1393')) then 'y1393'
    When ((vaz=1 and substring(rel_date ,1,4)='1394') OR (vaz=0 and substring(emp_date ,1,4)<='1394')) then 'y1394'
    When ( vaz=0 and substring(emp_date ,1,4)<='1395') then 'y1395'
    END As [Years]
    , Count(1) As [count]
    FROM vwpers1 where per_no>100
    GROUP BY CASE
    When ((vaz=1 and substring(rel_date ,1,4)='1386') OR (vaz=0 and substring(emp_date ,1,4)<='1386')) then 'y1386'
    When ((vaz=1 and substring(rel_date ,1,4)='1387') OR (vaz=0 and substring(emp_date ,1,4)<='1387')) then 'y1387'
    When ((vaz=1 and substring(rel_date ,1,4)='1388') OR (vaz=0 and substring(emp_date ,1,4)<='1388')) then 'y1388'
    When ((vaz=1 and substring(rel_date ,1,4)='1389') OR (vaz=0 and substring(emp_date ,1,4)<='1389')) then 'y1389'
    When ((vaz=1 and substring(rel_date ,1,4)='1390') OR (vaz=0 and substring(emp_date ,1,4)<='1390')) then 'y1390'
    When ((vaz=1 and substring(rel_date ,1,4)='1391') OR (vaz=0 and substring(emp_date ,1,4)<='1391')) then 'y1391'
    When ((vaz=1 and substring(rel_date ,1,4)='1392') OR (vaz=0 and substring(emp_date ,1,4)<='1392')) then 'y1392'
    When ((vaz=1 and substring(rel_date ,1,4)='1393') OR (vaz=0 and substring(emp_date ,1,4)<='1393')) then 'y1393'
    When ((vaz=1 and substring(rel_date ,1,4)='1394') OR (vaz=0 and substring(emp_date ,1,4)<='1394')) then 'y1394'
    When ( vaz=0 and substring(emp_date ,1,4)<='1395') then 'y1395'
    END
    , CASE
    When degree_no = 18 then 'دکتراومعادل'
    When degree_no = 17 then 'فوق لیسانس'
    When degree_no = 16 then 'لیسانس'
    When degree_no = 15 then 'فوق دیپلم'
    When degree_no = 14 then 'دیپلم'
    When degree_no < 14 then 'زیردیپلم'
    END ) tblexpr6
    PIVOT (max([count])
    For [Years] in ([y1395], [y1394], [y1393], [y1392], [y1391], [y1390], [y1389], [y1388], [y1387], [y1386])
    ) PVT

    موفق باشید .....
    قوانین سایت برنامه نویس [به هیچ عنوان از طریق پیام خصوصی به سوالات پاسخ داده نمی‌شود.]
    حمید محرابی

    چون وا نمیکنی گِره‌ای خود گِره مّشو / ابرو گشاده باش چو دستت گشاده نیست

  25. #25

    نقل قول: کمک برای ساختن این مدل گزارش

    استاد مرسی از جوابگویی وحوصله تون
    query آخر جواب داره ولی جوابها درست نیست مثلا در سال 95 تعداد زیردیپلم 6 نشون میده ولی توی سال 94 تعداد 96 نفر است که درست نیست من با توجه به فرمایش شما از این فایل تمام رکوردهای اونرا پیوست میکنم ممنون میشم دوباره راهنمایی کنید بینهایت سپاسگزارم
    فایل های ضمیمه فایل های ضمیمه

  26. #26
    مدیر بخش آواتار gilsoft
    تاریخ عضویت
    آبان 1386
    محل زندگی
    رشت
    پست
    753

    نقل قول: کمک برای ساختن این مدل گزارش

    سلام مجدد

    لطفاً اعداد ( خروجیِ صحیح کوئری ) سال 1395 و یکی از سالهای گذشته رو به تفکیک مقاطع تحصیلی .. به من بدبد

    منتظرم ...
    قوانین سایت برنامه نویس [به هیچ عنوان از طریق پیام خصوصی به سوالات پاسخ داده نمی‌شود.]
    حمید محرابی

    چون وا نمیکنی گِره‌ای خود گِره مّشو / ابرو گشاده باش چو دستت گشاده نیست

  27. #27

    نقل قول: کمک برای ساختن این مدل گزارش

    سلام باز هم ممنون
    سال 95 :لیسانس=291 و فوق لیسانس=88وفوق دیپلم=231 ودیپلم=707 وزیر دیپلم=125
    سال 94 :لیسانس=340 و فوق لیسانس=84وفوق دیپلم=230 ودیپلم=706 وزیر دیپلم=129
    البته استاد عزیز با توجه به فایلی که قبلا پیوست کردم شاید تعداد چند تا با این آمار متفاوت باشه ولی حدودا در رنج آمار بالا است
    بینهایت ممنون

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

  1. کمک برای ساختن انجمن با ASP
    نوشته شده توسط SalarZ در بخش توسعه وب (Web Development)
    پاسخ: 1
    آخرین پست: دوشنبه 13 اسفند 1386, 09:39 صبح
  2. کمک برای نوشتن این کد
    نوشته شده توسط evilboy در بخش برنامه نویسی در 6 VB
    پاسخ: 12
    آخرین پست: دوشنبه 14 اسفند 1385, 15:48 عصر
  3. درخواست کمک برای حل این مشکل
    نوشته شده توسط setak در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 3
    آخرین پست: پنج شنبه 24 فروردین 1385, 08:49 صبح
  4. کمک برای ساختن رقص نور بوسیله صوت
    نوشته شده توسط mjelecom در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: سه شنبه 04 مرداد 1384, 11:34 صبح
  5. برای ساختن این جور چیزها باید چی کار کنم
    نوشته شده توسط نعیم رضاییان در بخش برنامه نویسی در 6 VB
    پاسخ: 2
    آخرین پست: دوشنبه 22 فروردین 1384, 18:45 عصر

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

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