2017-07-28 63 views
2

我想通过SQL服务器在下面输出。在SQL服务器中选择多行到列

表A

| Id | Name | 2016 | 2017 | 
- - - - - - - - - - - - - - - - 
| 1 | ABCDEFG |  |  | 
| 2 | XYZLMON |  |  | 

表B

| Id | Value | Year | 
- - - - - - - - - - - 
| 1 | F | 2016 | 
| 1 | G | 2017 | 

输出

| Id | Name | 2016 | 2017 | 
- - - - - - - - - - - - - - - - 
| 1 | ABCDEFG | F | G | 
| 2 | XYZLMON |  |  | 

回答

0

试试这个:

SELECT 
    tbla.id as Id, 
    tbla.name as Name, 
    (SELECT 
     value 
    FROM tblb 
    WHERE tblb.Id = tbla.id 
    AND tblb.Year ='2016') as 2016, 
    (SELECT 
      value 
     FROM tblb 
     WHERE tblb.Id = tbla.id 
     AND tblb.Year ='2017') as 2017 
FROM tbla; 
+0

谢谢。这对我有用 – Parvin

1

您可以有两个这样做联接:

select a.*, b2016.value as val2016, b2017.value as val2017 
from a left join 
    b b2016 
    on a.id = b.id and b.year = 2016 left join 
    b b2017 
    on a.id = b.id and b.year = 2017; 
+0

给了一个错误:多部分组成的标识符不能被束缚。 – Parvin

1

你可以加入这些表和数据透视如下:

Select * 
from (
    Select 
     a.Id, 
     a.[Name], 
     b.[Value], 
     b.[year] 
    from tablea a 
    left join tableb b on a.Id = b.id 
) a 
pivot (
    max([Value]) 
    for [Year] in ([2016],[2017]) 
) p