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

نام تاپیک: مشکل در خروجی داده ها خاص در دیتابیس sql

  1. #1

    Red face مشکل در خروجی داده ها خاص در دیتابیس sql

    با سلام خدمت همه عزیزان همانطوری که مشاهده میکنید ما برای مشتری های خود 4 وضعیت رو شامل شدیم وضعیت ارسال نشده ،وضعیت ارسال شده ، وضعیت دریافت شده و نهایتاً وضعیت از لیست خارج شده حالا چیزی که ما در دیتابیس sql خودمون داریم جدول سمت راست هستش و چیزی که ما در نهایت میخوایم جدول سمت چپ که نتیجه نهایی است ، شروطی که باید رعایت بشه شامل تاریخ های بزرگتر 1400/01/02 و همچنین جنسیت مرد و عدم نمایش از لیست خارج شده ها در نتیجه نهایی می باشد.ممنون میشم راهنمایی بفرمایید

    sql.jpg


    البته گفته باشم کد زیر رو نوشتم اما جواب نمیده



    SELECT status.nam AS نام, status.nam_fa AS [نام خانوادگی], status.naumber AS [شماره قبض], COUNT(status_1.status) AS [ارسال نشده], COUNT(status_2.status) AS [ارسال شده]
    FROM status INNER JOIN
    status AS status_1 ON status.id = status_1.id INNER JOIN
    status AS status_2 ON status.id = status_2.id
    WHERE (status.mz <> N'زن') AND (status.datee > N'1400/01/02')
    GROUP BY status.nam, status.nam_fa, status.naumber
    HAVING (COUNT(status_1.status) = 0) or (COUNT(status_2.status) = 1)


    آخرین ویرایش به وسیله hamidrezax1 : سه شنبه 21 دی 1400 در 17:45 عصر

  2. #2
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: مشکل در خروجی داده ها خاص در دیتابیس sql

    سلام و روز خوش

    1- ظاهرا یک مسئله pivoting ساده است:

    select * from 
    (select id , nam , nam_fa , naumber, stat
    from status
    where stat in (0,1) and datee > '1400/01/02' and mz='mard'
    ) as input
    pivot (count(id) for stat in ([0],[1])) as output




    و برای اسم ستونها:
    select nam , nam_fa , naumber, 
    isnull([0],0) as [ارسال نشده],
    isnull([1],0) as [ارسال شده]
    from
    (select id , nam , nam_fa , naumber , stat
    from status
    where stat in (0,1) and datee > '1400/01/02' and mz='mard'
    ) as input
    pivot (count(id) for stat in ([0],[1])) as output

  3. #3
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: مشکل در خروجی داده ها خاص در دیتابیس sql

    2- این روش رو هم تست کنین و خبر بدین:

    select nam , nam_fa , naumber
    , count(case when stat=0 then 1 end) as 'ارسال نشده'
    , count(case when stat=1 then 1 end) as 'ارسال شده'
    from status
    where stat in (0,1) and datee >'1400/01/02' and mz='mard'

  4. #4
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: مشکل در خروجی داده ها خاص در دیتابیس sql

    3- طراحی جدول اشکال داره:
    • مشخصات مشتریان باید در یک جدول دیگه باشه و اینجا فقط باید customer_id نگهداری بشه، هر جا نیاز به مشخصات باشه کافی هست به جدول مشتریان join کنین.
    • فیلد تاریخ باید به صورت integer ذخیره بشه و نه varchar ؛ به این ترتیب عملیات مقایسه خیلی سریع انجام میشه. هر جا برای نمایش لازم باشه کافی هست اون رو format کنین.
    • فیلدهایی مثل جنسیت که مقادیر کاملا محدود و مشخصی میگیرن باید بصورت tinyint ذخیره بشن؛ در اینجا که فقط دو حالت داریم bit هم میشه استفاده کرد.

  5. #5

    نقل قول: مشکل در خروجی داده ها خاص در دیتابیس sql

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

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

  1. پاسخ: 2
    آخرین پست: پنج شنبه 11 تیر 1394, 16:11 عصر
  2. تبدیل دیتابیس فاكس پرو (FoxPro) به دیتابیس (SQL SERVER 2008) با پشتیبانی از زبان فارسی
    نوشته شده توسط majid_darab در بخش مسائل مرتبط با نصب و راه اندازی
    پاسخ: 9
    آخرین پست: سه شنبه 15 فروردین 1391, 16:14 عصر
  3. پاسخ: 1
    آخرین پست: چهارشنبه 02 شهریور 1390, 14:36 عصر
  4. پاسخ: 0
    آخرین پست: چهارشنبه 20 بهمن 1389, 16:56 عصر
  5. پاسخ: 2
    آخرین پست: چهارشنبه 17 آذر 1389, 20:08 عصر

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

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