看了一下,但找不到任何类似于我需要的东西。我有两个表连接在ID上,第二个表有关于第一个在不同属性下使用相同ID的多个详细信息。因此ID 1具有诸如A,B,C等属性,并且每个ID总共有9个。我想为每个具有所有不同属性的ID返回一行。
这是我的表格。
MAIN_Table
ID | Name
------ | ------
100 | Frank
200 | Bill
300 | Anne
Property_Table
ID | Prop | Value
------ | ------| -----
100 | AA | $4
100 | BB | ER
200 | BB | AMB
300 | AA | $10
200 | AA | $5
300 | BB | ER
我已经尝试了几个案例陈述,似乎为每个列出的值而不是单行返回一行,我不喜欢/想要这个......
ID | Name | Prop_AA | Prop_BB
----- | ------ | ------ | -------
100 | Frank | $4 | NULL
100 | Frank | NULL | ER
200 | Bill | $5 | NULL
200 | Bill | NULL | AMB
300 | Anne | $10 | NULL
300 | Anne | NULL | ER
我希望每个ID的所有内容都像这样...
ID | Name | Prop AA | Prop BB
----- | ------ | ------ | -------
100 | Frank | $4 | ER
200 | Bill | $5 | AMB
300 | Anne | $10 | ER
答案 0 :(得分:0)
我使用了2个常用表表达式来获取您需要的结果。 Common_Table_Expression
--CTE to get Prop AA's Id & Value
WITH Prop_AA AS
(
SELECT ID,Value
FROM Property_Table
WHERE Prop = 'AA'
),
--CTE to get Prop BB's Id & Value
Prop_BB AS
(
SELECT ID,Value
FROM Property_Table
WHERE Prop = 'BB'
)
SELECT mt.ID,Name,aa.Value as 'Prop AA',bb.Value as 'Prop BB'
FROM MAIN_Table mt
JOIN Prop_AA aa ON mt.ID = aa.ID -- Join Prop_AA
JOIN Prop_BB bb ON mt.ID = bb.ID -- Join Prop_BB
ORDER BY mt.ID