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

نام تاپیک: مشکل در استفاده از case در بخش where یک select

  1. #1

    مشکل در استفاده از case در بخش where یک select

    سلام
    من یک کوئری به شکل زیر نوشتم. وقتی که مقدار نال پاس می کنم باید همه رکوردها بازگشت داده بشه اما فقط چند تا رو بر می بازگشت می ده و وقتی مقدار @deskId ست می کنم هیچ مقداری بازگشت داده نمی شه

    select * from DocumentTB
    WHERE
    case when DocumentTB.customerType = 3 then COALESCE(@deskId, DocumentTB.customerId)
    when DocumentTB.customerType < 2 then COALESCE(@commonId, DocumentTB.customerId)
    else DocumentTB.customerId end

    اینجوری هم نوشتم باز هم همونجوری
    (DocumentTB.customerId = 
    case DocumentTB.customerType
    when 0 then COALESCE(@commonId, DocumentTB.customerId)
    when 1 then COALESCE(@commonId, DocumentTB.customerId)
    when 2 then DocumentTB.customerId
    when 3 then COALESCE(@deskId, DocumentTB.customerId)
    end)


    من sql server 2008 استفاده می کنم

  2. #2

    نقل قول: مشکل در استفاده از case در بخش where یک select

    دستور دومی که نوشتید به نظر مشکلی نداره
    SELECT * FROM DocumentTB
    WHERE
    DocumentTB.customerId =
    CASE DocumentTB.customerType
    WHEN 0 THEN COALESCE(@commonId, DocumentTB.customerId)
    WHEN 1 THEN COALESCE(@commonId, DocumentTB.customerId)
    WHEN 3 THEN COALESCE(@deskId, DocumentTB.customerId)
    ELSE DocumentTB.customerId
    END

    داده های جدولتون رو چک کنید شاید مشکل ازاون باشه.
    در ضمن نوع داده 2 پارامتر و customerId باید یکی باشه ، ممکنه نوع داده پارامترها رشته ای باشه و شما مقدار "" رو براش بفرستید که این باعث میشه مقدار صفر برگردونه و دستور شما خطای منطقی بده.

  3. #3

    نقل قول: مشکل در استفاده از case در بخش where یک select

    ممنون نوع داده اشتباه زده بودم یکی smallint بود و یکی int اما مشکل از این هم نبود. در یک بخش دیگه از where اشتباهی یک فیلد بر اساس یک فیلد دیگه گذاشته بودم اشتباه در نام های مشابه
    مشکل حل شد.
    البته باید مثل زیر بنویسم چون اگر مثل بالا باشه تمام رکوردها بازگشت می شه
    AND (DocumentTB.customerId = 
    case
    when DocumentTB.customerType < 2 and @commonId is not null then @commonId
    when DocumentTB.customerType = 3 and @deskId is not null then @deskId
    when @deskId is null and @commonId is null then DocumentTB.customerId
    end)

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

  1. شرط گذاری در بخش where دستور select ؟
    نوشته شده توسط baran_2005 در بخش T-SQL
    پاسخ: 5
    آخرین پست: شنبه 29 بهمن 1390, 08:35 صبح
  2. پاسخ: 1
    آخرین پست: یک شنبه 09 مرداد 1384, 16:46 عصر
  3. مشکل در استفاده از Event Onload
    نوشته شده توسط LeilaAsgari در بخش طراحی وب (Web Design)
    پاسخ: 2
    آخرین پست: یک شنبه 30 فروردین 1383, 07:55 صبح
  4. مشکل در استفاده از sql
    نوشته شده توسط ahmad sajjad در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 1
    آخرین پست: سه شنبه 11 فروردین 1383, 19:01 عصر
  5. مشکل در استفاده از DeleteFile
    نوشته شده توسط mostafa612003 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 3
    آخرین پست: شنبه 20 اردیبهشت 1382, 12:53 عصر

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

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