我有一個數據庫,如圖所示。讓我們用下面的數據爲例:
工單表:
WONUM (PK) | WORKTYPE | STATUS | DESCRIPTION
1234 URGENT OPEN Inv. work X.
FAILUREREPORT表:
FAILUREREPORTID (PK) | WONUM | FAILURECODE | ASSETNUM | TYPE
5678 1234 SYMPT1347 DT-JA-123 Problem
5679 1234 WA4521 DT-JA-123 Cause
5680 1234 SOL1672 DT-JA-123 Solution
失敗代碼表:
FAILURECODEID (PK) | FAILURECODE | DESCRIPTION
345 SYMPT1347 Symptom X.
346 WA4521 Cause Y.
347 SOL1672 Solution Z.
我有以下查詢,這不會工作中途:
SELECT F.WONUM, W.DESCRIPTION AS WO_DESC, W.STATUS, F.ASSETNUM, F.TYPE, C.DESCRIPTION AS FCODE_DESC
FROM WORKORDER W
INNER JOIN FAILUREREPORT F ON F.WONUM = W.WONUM
INNER JOIN FAILURECODE C ON F.FAILURECODE = C.FAILURECODE
WHERE W.WORKTYPE = 'URGENT' AND W.STATUS <> 'CANCELLED'
ORDER BY F.WONUM ASC, F.TYPE ASC
它返回:
WONUM | WO_DESC | STATUS | ASSETNUM | TYPE | FCODE_DESC
1234 Inv. work X. OPEN DT-JA-123 PROBLEM Symptom X.
1234 Inv. work X. OPEN DT-JA-123 CAUSE Cause Y.
1234 Inv. work X. OPEN DT-JA-123 SOLUTION Solution Z.
然而,不是3行,我想有症狀,原因和解決方案列在一行,如下所示:
WONUM | WO_DESC | STATUS | ASSETNUM | PROBLEM | CAUSE | SOLUTION
1234 Inv. work X. OPEN DT-JA-123 Symptom X. Cause Y. Solution Z.
如何使用pivot函數將行轉換爲列(如果可能的話)?我也接受任何其他解決方案,導致預期的結果。 我操作的數據庫是Oracle DB,而我的操場/測試環境是MySQL。我知道這個pivot不能在MySQL中使用,但是通過聚合和分組可以解決這個問題。
更正的種種顧慮。 –
您仍然需要將'MIN(CASE WHEN TYPE ='PROBLEM'THEN C.DESCRIPTION)as PROBLEM END'改爲MIN(CASE WHEN TYPE ='PROBLEM'THES C.DESCRIPTION END)as problem「。 – markusk
此外,MySQL要求你編寫'MIN(...)'而不是'MIN(...)'(MIN和'(')之間不允許有空格,並且'AS WO_DESC'必須從'GROUP BY'條款 – markusk