基于两个表的列名和表值的连接创建视图

问题描述 投票:0回答:2

我有两张桌子。

Table Ah:

Country HDI Luck SomeOtherColumn SoOn

1       1   2    x               y
2       1   2    b               c
3       2   3    v               g
4       3   4    e               y
5       2   2    b               g
6       4   1    n               k

和第二个

Table Bu

Attribute Value Meaning
Country   1     RichAndLuckyCountry
Country   2     AnotherRichAndLuckyCountry
Country   3     AlsoQuiteRichButStillLuckyCountry
Country   4     NotSoRichAndSadAboutItCountry
Country   5     DoingWellCountry
Country   6     DontWorryBeHappyCountry
HDI       1     Very high
HDI       2     High
HDI       3     Medium
HDI       4     Low
Luck      1     Very high
Luck      2     High
Luck      3     Medium
Luck      4     Low

我需要的结果视图将如下所示:

Table Result

Country Country_Dissolved                  HDI HDI_Dissolved Luck Luck_Dissolved SomeOtherColumn SoOn
1       RichAndLuckyCountry                1   Very high     2    High           x               y
2       AnotherRichAndLuckyCountry         1   Very high     2    High           b               c
3       AlsoQuiteRichButStillLuckyCountry 2   High          3    Medium         v               g
4       NotSoRichAndSadAboutItCountry      3   Medium        4    Low            e               y
5       DoingWellCountry                   2   High          2    High           b               g
6       DontWorryBeHappyCountry            4   Low           1    Very High      n               k   

我只设法用一列结合where子句来完成它:

CREATE OR REPLACE VIEW Result AS
SELECT Ah.Country. Bu.Meaning as County_Dissolved
FROM Ah
INNER JOIN Bu
ON Ah.Country = Bu.Value
WHERE Bu.Attribute = 'Country'

我可能需要一些命令来遍历列名,并将列名与attribute列中的值连接起来,因为实际表具有更多可能的组合,因此仅针对每种情况制作多个SQL语句是没有解决方案的。 >

如何创建类似于上述Result表的视图?使用表Ah中的键分解表Bu的值。

SQL Fiddle

任何帮助将不胜感激。预先感谢!

我有两张桌子。表Ah:国家/地区HDI运气不错其他栏目即将上线1 1 2 x y 2 1 2 b c 3 2 3 v g 4 3 4 e ...

sql oracle join view
2个回答
0
投票

您需要left joinAh的3个Bu


0
投票

您的查询似乎正确。

© www.soinside.com 2019 - 2024. All rights reserved.