mysql case語句怎么用?

mysql是一個關系型數據庫管理系統,由瑞典mysql ab 公司開發,目前屬于?oracle?旗下產品。

mysql case語句怎么用?

那么其中mysql case語句怎么用?

mysql case語句用法:

結構:case? when… then …end

1.判斷的同時改變其值

eg:

select?OperatorAccount, ????????case      when?CreateTime&gt;'2016-02-14?16:24:42'?then?'after' ?????????when?CreateTime<p><img src="https://img.php.cn/upload/image/704/307/148/1557717013649586.png" title="1557717013649586.png" alt="910fe696498deccf0c50f46c9d70345.png"></p><p>第二種寫法</p><pre class="brush:php;toolbar:false">?SELECT?CallerNumber,?CASE?IsLocal ?????????WHEN?0?THEN?'外線' ??????????WHEN?1?THEN?'內線'?END ??FROM?cdr

mysql case語句怎么用?

2.拆分一行為多列

eg:

SELECT?SipAccount,?COUNT(1)?AS?number,IsCheck ??FROM?cdr ??GROUP?BY?SipAccount,IsCheck

?mysql case語句怎么用?

針對這個統計結果進行拆分(0表示未打分,1代表優秀,2代表合格,3代表不合格)

最終結果如下:

mysql case語句怎么用?

所以最終要用到行拆分成三列,語句如下

?SELECT?SipAccount, ??????????????(CASE?IsCheck?WHEN?1?THEN?number?END)?youxiu, ??????????????(CASE?IsCheck?WHEN?2?THEN?number?END)?hege, ??????????????(CASE?IsCheck?WHEN?3?THEN?number?END)?buhege ?FROM ??????????(SELECT?SipAccount,?COUNT(1)?AS?number,IsCheck ???????????FROM?cdr ???????????GROUP?BY?SipAccount,IsCheck)?AS?a

mysql case語句怎么用?

現在結果是這樣的,你會發現雖然拆成了三列,但是最終結果還不是自己需要的,接下來就需要根據sipaccount來分組的同時對結果進行處理了。語句如下:

?SELECT?sipaccount, ????????IF(MAX(youxiu)?IS?NULL,0,?MAX(youxiu))?youxiu, ????????IF(MAX(hege)?IS?NULL,0,?MAX(hege))?hege, ????????IF(MAX(buhege)?IS?NULL,0,?MAX(buhege))?buhege FROM ????????(SELECT?SipAccount, ????????(CASE?IsCheck?WHEN?1?THEN?number?END)?youxiu, ????????(CASE?IsCheck?WHEN?2?THEN?number?END)?hege, ????????(CASE?IsCheck?WHEN?3?THEN?number?END)?buhege ????????FROM ??   (SELECT?SipAccount,?COUNT(1)?AS?number,IsCheck??FROM?cdr??GROUP?BY?SipAccount,IsCheck)?AS?a)?AS?b ????????????????????GROUP?BY?sipaccount

mysql case語句怎么用?

最終得到了這個結果。正是我們需要的格式。

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享