[英]Split mysql row into 2 rows based on 2 column values
我正在嘗試創建考勤卡數據的 output 視圖,以便可以將其導出到工資單系統。 目前,數據結構是這樣的。
|Emp_ID|Date|Job|CostCode|Reg_Hrs|OT_Hrs|
Data
|BR0000|date|012|01234567|0000008|000002|
導入過程需要常規時間和加班時間在不同的行上所以我的 output 需要如下所示:
|Emp_ID|T_Date|Job_Code|Cost_Code|Reg_Hrs|OT_Hrs|
Data
|BR0000|..date|00000012|001234567|0000008|000000|
|BR0000|..date|00000012|001234567|0000000|000002|
我已經嘗試了 UNION ALL 語句的一些變體並且得到了接近但不是我需要的,因為第二個 select 沒有創建正確的值或列布局。
SELECT `Emp_ID` AS `Emp_ID`,
`T_Date` AS `T_Date`,
SUBSTRING(CONCAT(`Job_Num`,`Job_let`),1,7) AS `Job_Code`,
CONCAT(`Job_Code`, IFNULL(`Equip_Code`,'0000')) AS `Cost_Code,
`Reg_Hrs` as `Reg_Hrs`,
`OT_Hrs` as `OT_Hrs`
FROM `timecard_payroll`
WHERE `Reg_Hrs` <> 0
UNION ALL
SELECT `Emp_ID` AS `Emp_ID`,
`T_Date` AS `T_Date`,
SUBSTRING(CONCAT(`Job_Num`,`Job_let`),1,7) AS `Job_Code`,
CONCAT(`Job_Code`, IFNULL(`Equip_Code`,'0000')) AS `Cost_Code,
`Reg_Hrs` as `none`, -- have tried different variations of these last 3 lines
`OT_Hrs` as `OT_Hrs` FROM `timecard_payroll`
WHERE `OT_Hrs` <> 0
ORDER BY `Emp_ID`, `T_Date`
我可能必須編寫一個 PHP 腳本來寫入臨時表以進行導出。
任何幫助表示贊賞。
正式地:
SELECT {other columns}, Reg_Hrs * x.x Reg_Hrs, OT_Hrs * (1 - x.x) OT_Hrs
FROM source table
CROSS JOIN ( SELECT 0 x
UNION ALL
SELECT 1 ) x
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.