Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 当联接表有多个值时,返回一行_Sql Server_Concatenation_Jointable - Fatal编程技术网

Sql server 当联接表有多个值时,返回一行

Sql server 当联接表有多个值时,返回一行,sql-server,concatenation,jointable,Sql Server,Concatenation,Jointable,四处看了一下,但找不到任何与我需要的相似的东西。我有两个表在ID上连接,第二个表在使用相同ID的不同属性下有关于第一个表的多个详细信息。因此ID 1有A、B、C等属性,每个ID总共有9个属性。我希望每个ID返回一行,其中包含所有不同的属性 这是我的桌子 MAIN_Table ID | Name ------ | ------ 100 | Frank 200 | Bill 300 | Anne Property_Table ID | Prop

四处看了一下,但找不到任何与我需要的相似的东西。我有两个表在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
我尝试了几个case语句,它们似乎为每个列出的值返回一行,而不是在一行上,我不喜欢/不想要这个

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

我使用了两个常用的表表达式来获得所需的结果


我似乎得到了我想要的结果,使用Max(当prop=AA,然后Value)作为propaa,但我有许多其他列,并且必须将这些列中的每一列添加到一个group by,这会导致错误吗?
--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