2017-07-28 66 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