0
我有一個現有的數據庫,其列值已被抽象到單獨的「值」表(出於本地化的原因,但在此問題的上下文中不一定重要)。在我的情況,說我有兩個表:根據值將查詢結果拆分爲虛擬列
***ITEM Table***
id cat
----|-----|
1 | A |
2 | A |
3 | B |
***VALUES Table***
seq id code value type
----|----|-------|-------|-------|
10 | 1 | NAME | Name1 | Type1 |
11 | 1 | DESC | Desc1 | Type1 |
12 | 1 | NAME | Name1 | Type2 |
13 | 1 | DESC | Desc1 | Type2 |
14 | 2 | NAME | Name2 | Type1 |
15 | 2 | DESC | Desc2 | Type1 |
目前,我可以檢索名稱和描述是這樣的:
***Current Result Set***
id code value
----|-------|-------|
1 | NAME | Name1 |
1 | DESC | Desc1 |
2 | NAME | Name2 |
2 | DESC | Desc2 |
不過,我想檢索名稱/描述是這樣的:
***Target Result Set***
id NAME DESC
----|-------|-------|
1 | Name1 | Desc1 |
2 | Name2 | Desc2 |
我以爲CTE /窗口函數可能適合在這種情況下,但我不知道如何解決這個問題。
實質上,如何基於列中的值創建列別名和關聯值(在這種情況下,如果'code'列包含'NAME',則會創建虛擬'NAME'列,來自相關「值」列的值)?
我也考慮過CASE語句,但不能用它來創建這樣的動態別名。
如果這是不可能的,就像在(Dynamic column alias based on column value)中一樣,如果我提前知道「CODE」值,就可以做到這一點(即我知道只有「NAME」和「DESC」是有效代碼。
真的很接近,但我忘了提及可能有多個'NAME'或'DESC'與給定項目相關聯,所以MAX不一定像這裏提到的那樣工作。還有一列將這些值進一步分類(「類型」)。 – sparty02 2014-10-27 21:55:39
我想我可以在我的謂詞中包含這個TYPE,或者在我的CASE – sparty02 2014-10-27 22:03:51
@ spary02中包含附加條件,您可以鍵入group by,也可以選擇從句 – radar 2014-10-27 22:26:27