色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql動態縱表變橫表

錢艷冰2年前9瀏覽0評論

MySQL是一種開源的關系型數據庫管理系統,它支持動態縱表變橫表的操作,這使得我們可以更加靈活地處理數據。

動態縱表指的是表中的字段是動態變化的,每次插入數據時,表中的字段可能會發生變化。而橫表則是指表中的字段是固定不變的,每次插入數據時只需填充相應的值。將動態縱表轉變為橫表則可以方便地進行數據分析、查詢等操作。

下面是一個示例,假設我們有一個動態縱表,其中記錄了員工的考勤情況:

CREATE TABLE employee_attendance (
id INT NOT NULL AUTO_INCREMENT,
employee_id INT NOT NULL,
attendance_date DATE NOT NULL,
attendance_type VARCHAR(10) NOT NULL,
PRIMARY KEY (id)
);

這個表中有三個字段:employee_id代表員工ID,attendance_date代表考勤日期,attendance_type代表考勤狀態(如上班、下班、遲到、早退等)。當員工在某一天請假或者加班時,就需要添加額外的attendance_type字段。

我們可以使用MySQL的PIVOT函數將這個動態縱表轉變為橫表,如下所示:

SELECT
employee_id,
attendance_date,
COALESCE(SUM(CASE WHEN attendance_type='上班' THEN 1 ELSE 0 END), 0) AS shangban,
COALESCE(SUM(CASE WHEN attendance_type='下班' THEN 1 ELSE 0 END), 0) AS xiaban,
COALESCE(SUM(CASE WHEN attendance_type='遲到' THEN 1 ELSE 0 END), 0) AS chidao,
COALESCE(SUM(CASE WHEN attendance_type='早退' THEN 1 ELSE 0 END), 0) AS zaotui,
COALESCE(SUM(CASE WHEN attendance_type='請假' THEN 1 ELSE 0 END), 0) AS qingjia,
COALESCE(SUM(CASE WHEN attendance_type='加班' THEN 1 ELSE 0 END), 0) AS jiaban
FROM employee_attendance
GROUP BY employee_id, attendance_date;

上面的代碼使用了COALESCE函數對結果進行了處理,如果某個值為NULL則返回0。這里使用了SUM和CASE語句來判斷員工的考勤狀態,并將結果以橫向的方式呈現。

以上就是使用MySQL進行動態縱表變橫表的基本操作,希望對大家有所幫助。