我有產生以下結果的查詢:帶臨時字段的查找表?
表1:
degree_code occupation_code degree_completions degree_level
1.0000 20-2021 10 1
1.0000 20-2022 10 1
1.1051 52-2095 2 3
1.1051 52-2095 41 2
1.5010 15-1100 2 3
我有涉及degree_level到我需要使用自定義類別另一個小,查找表:
表2
degree_level degree_level_recode
1 AADEGREE
2 AADEGREE
3 BACHDEGREE
我想建立的第一個查詢報告以下格式的輸出:
degree_code occupation_code degree_completions degree_level AADEGREE BACHDEGREE
1.0000 20-2021 10 1 10 0
1.0000 20-2022 10 1 10 0
1.1051 52-2095 2 3 3 0
1.1051 52-2095 41 2 0 41
1.5010 15-1100 2 3 2 1
基本上,建立在原始查詢新的臨時重新編碼領域,當他們符合degree_level_recode該報告degree_completions他們的下面,輸入如果不匹配,則爲0。這是非常簡單的;我將針對查詢中每個元素中的其他字段對recode字段執行操作。
我已經展示了degree_completions字段以供參考,但爲了顯而易見的冗餘原因,我會在最終查詢中忽略它。
我想我需要使用CASE語句或類似的東西進行比較檢查,但我是SQL新手。
編輯:
在參考下面查的回答,以訂正table1的輸出(映射重新編碼後):
degree_code degree_level degree_completions degree_level_recode
01.0601 2 11 LESSCOLL
01.0601 3 22 AADEGR
01.0605 2 3 LESSCOLL
考慮這個代碼(表2被編輯如上文引用):
SELECT degree_code
,degree_level
,[LESSCOL] AS LESSCOL
,[AADEGR] AS AADEGR
,[BACHDEGR] AS BACHDEGR
,[MADEGR] AS MADEGR
,[DOCDEGR] AS DOCDEGR
FROM
(
SELECT degree_code
,table1.degree_level
,degree_level_recode
,degree_code
FROM table1
,table2
WHERE table1.degree_level = table2.degree_code
) AS p
PIVOT
(
SUM (degree_completions)
FOR degree_level_recode IN ([LESSCOL], [AADEGR], . . .)
) AS pvt
將會產生以下結果:
degree_code degree_level LESSCOL AADEGR BACHDEGR MADEGR DOCDEG
01.0601 2 NULL NULL NULL NULL NULL
01.0601 3 NULL 22 NULL NULL NULL
01.0505 2 NULL NULL NULL NULL NULL
我試圖去:
degree_code degree_level LESSCOL AADEGR BACHDEGR MADEGR DOCDEG
01.0601 2 11 NULL NULL NULL NULL
01.0601 3 NULL 22 NULL NULL NULL
01.0505 2 3 NULL NULL NULL NULL
此外,代之以NULL 0
您使用哪種數據庫平臺? – PyQL
Microsoft Express SQL Server – AJBloomie