PDA

View Full Version : سوال: سئوالselect,case



moloud
شنبه 12 دی 1388, 21:17 عصر
سلام
من در sqlserver2000جدولی دارم که سندهای انبار را در ان ذخیره میکنم وهمه نوع ورودی و خروجی در یک فیلد ذخیره میشود و با نوع سند ازهم تفکیک می شوند حالا میخواهم براساس نوع سند یک فیلد را به چند فیلد تبدیل کنم و بعد sum انها را بگیرم با دستور case توانستم یک فیلد را به چند فیلد تبدیل کنم ولی برای sum موفق نشدم کدهایی را که نوشتم برایتان ارسال می کنم . لطفا راهنماییم کنید
و سئوال دیگه اینکه چطوری میتونیم در view از دستور caseاستفاده کنیم
باتشکر
SELECT tbl_sanad_detail.*, CASE type_sanad WHEN 1 THEN quantity_kala ELSE 0 END resid,
CASE type_sanad WHEN 2 THEN quantity_kala ELSE 0 END havale, CASE type_sanad WHEN 3 THEN quantity_kala ELSE 0 END return_anbar,
CASE type_sanad WHEN 4 THEN quantity_kala ELSE 0 END return_company, CASE type_sanad WHEN 5 THEN quantity_kala ELSE 0 END stock_first,
CASE type_sanad WHEN 6 THEN quantity_kala ELSE 0 END wastes
FROM tbl_sanad_detail

دستوربالادرست است ولی دستورات بعدی جواب نمیده
SELECT distinct ss.code_kala,kk.name_f,type_sanad,
CASE ss.type_sanad WHEN 1 THEN sum(ss.quantity_kala) ELSE 0 END resid,
CASE ss.type_sanad WHEN 2 THEN sum(ss.quantity_kala) ELSE 0 END havale,
CASE ss.type_sanad WHEN 3 THEN sum(quantity_kala) ELSE 0 END return_anbar,
CASE ss.type_sanad WHEN 4 THEN sum(ss.quantity_kala) ELSE 0 END return_company,
CASE ss.type_sanad WHEN 5 THEN sum(quantity_kala) ELSE 0 END stock_first,
CASE ss.type_sanad WHEN 6 THEN sum(ss.quantity_kala) ELSE 0 END wastes
FROM tbl_sanad_detail as ss,tbl_kala as kk
where ss.code_kala=kk.code
group by ss.code_kala,kk.name_f,type_sanad

محمد سلیم آبادی
سه شنبه 15 دی 1388, 14:20 عصر
سلام،
وقتی از group by استفاده می کنین ستون هایی که انتخاب می شوند یا باید در داخل توابع تجمعی استفاده شوند یا اینکه در جلوی group by وجود داشته باشند.

این کوئری رو امتحان کنین:


SELECT ss.code_kala,kk.name_f,
SUM(CASE ss.type_sanad WHEN 1 THEN ss.quantity_kala ELSE 0 END) resid,
SUM(CASE ss.type_sanad WHEN 2 THEN ss.quantity_kala ELSE 0 END) havale,
SUM(CASE ss.type_sanad WHEN 3 THEN quantity_kala ELSE 0 END) return_anbar,
SUM(CASE ss.type_sanad WHEN 4 THEN ss.quantity_kala ELSE 0 END) return_company,
SUM(CASE ss.type_sanad WHEN 5 THEN quantity_kala ELSE 0 END) stock_first,
SUM(CASE ss.type_sanad WHEN 6 THEN ss.quantity_kala ELSE 0 END) wastes
FROM tbl_sanad_detail as ss,tbl_kala as kk
where ss.code_kala=kk.code
group by ss.code_kala,kk.name_f