大大们:
我写了一个sql语句,两种情况执行出来结果一样
select [name],
max(isnull((case subject when '数学' then score end),0)) [数学],
max(isnull((case subject when '语文' then score end),0)) [语文],
max(isnull((case subject when '英语' then score end),0)) [英语],
isnull(max(case subject when 'asp.net' then score end),0) [asp.net],
isnull(max(case subject when 'sqlserver' then score end),0) [sqlserver]
from idl
group by [name]一种是先判断是否为null,在聚合
另一种是先聚合在判断。
请问哪种更规范????谢谢
我写了一个sql语句,两种情况执行出来结果一样
select [name],
max(isnull((case subject when '数学' then score end),0)) [数学],
max(isnull((case subject when '语文' then score end),0)) [语文],
max(isnull((case subject when '英语' then score end),0)) [英语],
isnull(max(case subject when 'asp.net' then score end),0) [asp.net],
isnull(max(case subject when 'sqlserver' then score end),0) [sqlserver]
from idl
group by [name]一种是先判断是否为null,在聚合
另一种是先聚合在判断。
请问哪种更规范????谢谢
isnull(max(case subject when 'asp.net' then score end),0)
不建議這樣寫,最好先把null處理一下,要不然null和其他字符操作后仍是null
你這裡是max函數看不出效果,要是用sum函數的話, null+值=null 結果就不對了。
select [name],
max(case subject when '数学' then score else 0 end) [数学],
max(case subject when '语文' then score else 0 end) [语文]
from idl
group by [name]