【发布时间】:2016-12-21 07:21:42
【问题描述】:
我想将两张表合并为一张,但问题是一张表是水平格式,另一张是垂直格式。
下面是表结构,join 将在 Employeeid 上:
表 1:EmpDetail
ID | CODE | Name
-- |--------| ---
1 | 1008M | ABC
2 | 1039E | XYZ
3 | 1040E | TYS
表 2:EmpCustomeDetail
EmpID | FiledName | FieldValue
-- |-------- | ---
1 | FlD1 | temp1
1 | FlD2 | temp2
1 | FlD3 | temp3
2 | FlD1 | temp1
3 | FLD4 | temp6
所需的输出:
EmpID | Code | Name | Fld1 | Fld2 | Fld3 | Fld4
-- |---- | ------| --- | ---- |---- |----
1 | 1008M | ABC | temp1 | temp2 | temp3 | null
2 | 1039E | XYZ | temp1 | null | null | null
3 | 1040E | TYS | null | null | null | temp6
我曾尝试使用 Pivot Query,但它没有给出我要求的准确输出 以下是到目前为止我尝试过的查询
SELECT A.*
FROM (
SELECT
e.Id,
e.code,
e.Fname,
FROM EmpDetail e
LEFT JOIN (
SELECT *
FROM (
SELECT
d.CustomeFieldName
, c.ComboValue
, d.EmployeeId
FROM EmpCustomeDetail d
) src
PIVOT (
MAX(FieldValue)
) src2
) c ON e.Id = c.EmployeeId
) A
【问题讨论】:
-
所有后面的列名(Fld1 到 FldX)都提前知道了吗?你知道他们的人数吗?
标签: sql sql-server sql-server-2008