我有2个用外键约束映射的SQL表
Table A
Field1
Field2
....
第二个
Table B
Year
Value
TableAId (foreign key)
如何获得这样的输出而不是连接2个表并在每一行中重复表A字段
Result
Field1
Field2
...
TableBValue1 (first value field from table B)
TableBValue2
...
一些示例数据
表A
ID - Field 1 - Field 2 - ...
1 - "Banana" - "Cold" - ...
2 - "Apple" - "Hot" - ...
表B
ID - Year - Value - TableAId
1 - 2016 - 1.5 - 1
2 - 2017 - 3.2 - 1
3 - 2018 - 1.6 - 1
4 - 2016 - 1.8 - 2
5 - 2017 - 2.2 - 2
6 - 2018 - 2.6 - 2
预期结果
ID - Field 1 - Field 2 - ... - 2016Value - 2017Value - 2018Value
1 - "Banana" - "Cold" - ... - 1.5 - 3.2 - 1.6
2 - "Apple" - "Hot" - ... - 1.8 - 2.2 - 2.6
答案 0 :(得分:0)
希望这有帮助,
CREATE TABLE #TableA (ID INT, F1 VARCHAR(50), F2 VARCHAR(50))
CREATE TABLE #TableB (ID INT, TableAId INT, YEAR INT, Value float)
INSERT INTO #TableA
SELECT 1,
'Banana',
'Cold'
UNION
SELECT 2,
'Apple',
'Hot'
INSERT INTO #TableB (ID, YEAR, Value, TableAId)
SELECT 1, 2016, 1.5, 1
UNION
SELECT 2, 2017, 3.2, 1
UNION
SELECT 3, 2018, 1.6, 1
UNION
SELECT 4, 2016, 1.8, 2
UNION
SELECT 5, 2017, 2.2, 2
UNION
SELECT 6, 2018, 2.6, 2
SELECT *
FROM #TableA
SELECT *
FROM #TableB GO WITH CTEResult AS
( SELECT TableAID,
A.F1,
A.F2,
B.YEAR,
B.Value
FROM #TableA A
INNER JOIN #TableB B ON A.ID = B.TableAId)
SELECT *
FROM CTEResult PIVOT (Max(Value)
FOR YEAR IN ([2016],[2017],[2018])) Res