日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

【PostgreSQL】行变列、非空(CASE WHEN、COALESCE)语句总结

發布時間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【PostgreSQL】行变列、非空(CASE WHEN、COALESCE)语句总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 源表結構:

order_idclasscount
11110110000230
11110110001213
1111011200212
11110110020220

2. 目標表結構:

根據order_id分組,根據不同的class進行統計

order_idcount_1count_2count_3count_4count_5count_6count_7count_8count_9count_10
11110110000230030030030030

3. sql語句如下:

(1)分組統計,
(2)使用 COALESCE 返回第一個不為null的值,如果值為null,返回0

select order_id,
sum(COALESCE(cass class when 1 then count END,0)) as count_1,
sum(COALESCE(cass class when 2 then count END,0)) as count_2,
sum(COALESCE(cass class when 3 then count END,0)) as count_3,
sum(COALESCE(cass class when 4 then count END,0)) as count_4,
sum(COALESCE(cass class when 5 then count END,0)) as count_5,
sum(COALESCE(cass class when 6 then count END,0)) as count_6,
sum(COALESCE(cass class when 7 then count END,0)) as count_7,
sum(COALESCE(cass class when 8 then count END,0)) as count_8,
sum(COALESCE(cass class when 9 then count END,0)) as count_9,
sum(COALESCE(cass class when 10 then count END,0)) as count_10
from test_table group by order_id;

4. IF ELSE不太好用,可以用CASE WHEN THEN ELSE代替

比如 active_hour int 值分別為0~23
但是想要得到倆位的HH的小時值,需要把 0~9 轉換為 00 ~ 09

select active_hour,case when active_hour > 9 then ''||active_hour else '0'||active_hour from t_active;

總結

以上是生活随笔為你收集整理的【PostgreSQL】行变列、非空(CASE WHEN、COALESCE)语句总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。