Rstudio 操作mysql實現行轉列
# 加載類庫
require(RMySQL)
library(RMySQL)
# 建立本地連接
con<-dbConnect(MySQL(),host='xxxx',port=xxx,dbname="xx",user="xx",password="xxxx")
# 修改編碼 , 否則會出現中文亂碼
dbSendQuery(con, "SET NAMES gbk")
# 查看數據表
dbListTables(con)
# 查看表字段
dbListFields(con, "xx")
# 查詢MySQL信息
summary(MySQL(), verbose = TRUE)
# mysql 連接示例信息
summary(con, verbose = TRUE)
# MySQL鏈接信息
dbListConnections(MySQL())
# 數據查詢
# 編輯查詢語句
query_0 = "select
a.point_name
,a.monitor_time
,a.pm25
from xx a
where a.region_code='xx'
and DATE_FORMAT(a.monitor_time,'%Y%m')='201811'
GROUP BY a.monitor_time
ORDER BY a.monitor_time;"
# 轉置
query_1="select
a.monitor_time as mon_time
,MAX(case a.point_name WHEN '開封' then a.pm25 else 0 END) '開封'
,MAX(case a.point_name WHEN '婦幼保健院' then a.pm25 else 0 END) '婦幼保健院'
,MAX(case a.point_name WHEN '龍亭公園' then a.pm25 else 0 END) '龍亭公園'
,MAX(case a.point_name WHEN '世紀星幼兒園' then a.pm25 else 0 END) '世紀星幼兒園'
,MAX(case a.point_name WHEN '腫瘤醫院' then a.pm25 else 0 END) '腫瘤醫院'
from xx a
where a.region_code='xx'
and DATE_FORMAT(a.monitor_time,'%Y%m')='201811'
GROUP BY a.monitor_time
ORDER BY a.monitor_time;"
# 執行查詢
d0 <- dbGetQuery(con, query_1)
# 關閉連接
dbDisconnect(con)
原數據輸出

目標結果輸出

