PDA

View Full Version : ایجاد فیلد جدید در جدول، با توجه به مقادیر هر رکورد



Hkarimi
سه شنبه 06 خرداد 1393, 10:43 صبح
سلام.
میدونم عنوان تاپیک گویا نیست، ببخشید. دیگه واضح تر از این نمیشد بذارم.
بریم سراغ مشکلم...
فرض کنید که من یه جدول دارم با سه فیلد: Name --- Month --- Price
و این مقادیر داخلش هست:
Ali --- 1 --- 1000
Ali --- 2 --- 1500
Ali --- 4 --- 1000
Reza --- 1 --- 2000
Reza --- 2 --- 3000
Reza --- 3 --- 4000
این 1 و 2 و 3 و 4 نشون دهنده ماه های مختلف سال هستن. و به ازای هر اسم ممکنه برای تمام 12 ماه اطلاعات داشته باشیم . ممکن هم هست تمام 12 ماه پر نباشه و برای بعضی از ماه ها اطلاعات توی جدول باشه.
حالا میخوام از این جدول، برسم به چیزی که همچین شکلی داشته باشه:
Name --- M1 --- M2 --- M3 --- M4 --- M5 --- M6 --- ... --- M12
و اطلاعات بالا به این شکل داخلش قرار بگیره:
Ali --- 1000 --- 1500 --- Null --- 1000 --- Null --- Null --- Null --- ... --- Null
Reza --- 2000 --- 3000 --- 4000 --- Null --- Null --- Null --- Null --- ... --- Null

ایده ای؟ راه حلی؟ کمکی، چیزی اگه بدید که ما رو شرمنده دو دنیای خودتون کردید.

emad4000
چهارشنبه 07 خرداد 1393, 13:23 عصر
SELECT Name,
(CASE WHEN Month = 1 THEN Price ELSE Null END) M1,
(CASE WHEN Month = 2 THEN Price ELSE Null END) M2,
...
(CASE WHEN Month = 12 THEN Price ELSE Null END) M12
FROM YourTable
GROUP BY Name



فكر مي كنم اين كارتون رو راه مي اندازه :لبخندساده:

Hkarimi
یک شنبه 11 خرداد 1393, 09:34 صبح
SELECT Name,
(CASE WHEN Month = 1 THEN Price ELSE Null END) M1,
(CASE WHEN Month = 2 THEN Price ELSE Null END) M2,
...
(CASE WHEN Month = 12 THEN Price ELSE Null END) M12
FROM YourTable
GROUP BY Name



فكر مي كنم اين كارتون رو راه مي اندازه :لبخندساده:

سلام. وقت بخیر.
ممنون از پاسخ. ولی متاسفانه هر چی باهاش کار کردم نتونستم خطاش رو رفع کنم. میگه که حتما باید از توابع aggregate استفاده کنید، خب بخاطر استفاده از group by طبیعی هم هست. اونم استفاده کردم ولی بازم خطا رفع نشد که نشد.
ممنون تر میشم اگه دوباره یه نگاهی بندازید.

================================================== ======

حل شد...