各位前輩好!
平常都再潛水看各位前輩的文章
近日碰上一個SQL的關卡
想請教iT邦上的大神們
需求如下:
圖1為計算說明
圖2為範例
圖1
圖2
===========================================
如有甚麼描述不好的地方,會馬上補充
--參數1根據部門(DEP)、代碼(ID)、型號(TYPE),對應表B的部門、代碼、機群(EGROUP)
WITH C AS
(
SELECT A.DEP,A.ID,A.TYPE,A.MODEL,B.YYYY,
CASE WHEN B.KIND IS NOT NULL THEN '1_' || B.KIND ELSE B.KIND END AS Col_KIND,
(A.PARAM1B.PARAMETER) AS P_VALUE
FROM A
LEFT JOIN B ON A.DEP=B.DEP AND A.ID=B.ID AND A.TYPE=B.EGROUP
UNION ALL
--參數2根據部門、代碼、機型(MODEL),對應表B的部門、代碼、機群
SELECT A.DEP,A.ID,A.TYPE,A.MODEL,B.YYYY,
CASE WHEN B.KIND IS NOT NULL THEN '2_' || B.KIND ELSE B.KIND END AS Col_KIND,
(A.PARAM1B.PARAMETER) AS P_VALUE
FROM A
LEFT JOIN B ON A.DEP=B.DEP AND A.ID=B.ID AND A.MODEL=B.EGROUP
)
SELECT * FROM C
PIVOT (
SUM(P_VALUE) FOR Col_KIND IN ('1_MAX','1_MIN','1_CU','2_MAX','2_MIN','2_CU')
)
你希望有參數3也能自動擴充,無法,因為你上方的參數1和2 JOIN條件不同,不知你往後的規律是如何?! 另外PIVOT的欄位LIST好像只能寫死,我也是剛剛參考網路,你可以在Google看可不可以寫活!