PDA

View Full Version : حرفه ای: میشه result های null رو از یک کوری pivot حذف کرد؟



combo_ci
جمعه 24 دی 1389, 15:19 عصر
سلام
من یک کوری با pivot نوشتم به صورت زیر

SELECT * FROM
( SELECT Srl_Type_Value,value FROM dbo.Karname_Item ) t
PIVOT (max(t.Srl_Type_Value) FOR t.VALUE IN
([Reading],[Writing],[Final Examination])
) as Pvt


ایت کوری رو بعضی از column ها result های null داره
یه جوری میشه این result ها رو حذف کرد؟ یعنی یه شرطی رو روی result ؟

حمیدرضاصادقیان
جمعه 24 دی 1389, 21:16 عصر
سلام.
هم میتونید در select اول بعد از Pivot از where استفاده کنید و با استفاده از Not null مقادیر غیر null رو بیارید هم میتونید در لیست اول به جای * از نام فیلدها استفاده کرده و با تابع isnull اون مقادیری که مقدارش null هست رو مثلا 0 قرار بدید.

combo_ci
جمعه 24 دی 1389, 22:12 عصر
ممنون جناب صادقی
در مورد " هم میتونید در select اول بعد از Pivot از where استفاده کنید "
کار نمیکنه چون من میخوام بعد از جواب pivot عمل فیلتر رو انجام بدم
در مورد " در لیست اول به جای * از نام فیلدها استفاده کرده و با تابع isnull اون مقادیری که مقدارش null هست رو مثلا 0 قرار بدید. "
اینم نمیشه چون ممکنه لیست جلوی عملگر IN داینامیک باشه

حمیدرضاصادقیان
شنبه 25 دی 1389, 18:08 عصر
لیست جلوی عملگر IN داینامیک باشه

این لیست داینامیک نیست و باید خودتون مقدار بدید مگر اینکه با استفاده از dynamic SQL اونو ایجاد کنید.

combo_ci
یک شنبه 26 دی 1389, 18:07 عصر
سلام به راحتی و خیلی جالب و کاربردی داینامیک میشه
http://www.simple-talk.com/community/blogs/andras/archive/2007/09/14/37265.aspx

حالا من سوالم اینه که چطور میشه نتیجه pivot رو مثلا اونایی که صفر هستن رو نیاره

حمیدرضاصادقیان
یک شنبه 26 دی 1389, 19:26 عصر
سلام به راحتی و خیلی جالب و کاربردی داینامیک میشه
http://www.simple-talk.com/community.../14/37265.aspx

دوست عزیز منم عرض کردم با Dynamic SQL میشه وگرنه خودش راهی نداره به صورت Dynamic لیست فیلدهارو بیاره.
در این لینک هم از Dynamic SQL استفاده کرده است.
خوب شما اگر بخواهید مقادیر Null رو نیارید ممکنه یک ردیف در ستون متفاوت مقادیر مختلف داشته باشه.
فرض کنید دو ستون مقدار دارن و یک ستون null هست. حالا اگر ما بگیم غیر null ها رو بیاره نتیجه کوئری به نظر شما چه شکلی میشه؟

combo_ci
یک شنبه 26 دی 1389, 22:31 عصر
البته به نکته خوبی اشاره کردید
ولی اگر بشه مثلا حداقل از تابع isnull روی خروجی استفاده کرد بازم درست میشه..

حمیدرضاصادقیان
یک شنبه 26 دی 1389, 22:55 عصر
سلام.
شما همونطور که دارید لیست فیلدها رو به صورت داینامیک ایجاد می کنید میتونید در داخل تابع Isnull نیز قرار بدید.
اگر بتونید نمونه Query رو با تابع Isnull قرار بدید بهتره.