我有这样的列
FIELDPID FIELDNAME VALUE
12 COMPANY_NAME Bristol bb
12 CP_ID 47957
12 CPID_TYPE ORG
67 COMPANY_NAME PRODUCTS LTD
67 CP_ID 47957
67 CPID_TYPE ORG
69 COMPANY_NAME PRODUCTS LTD
69 CP_ID 47957
69 CPID_TYPE IND
我希望结果为
FIELDPID,COMPANY_NAME,CP_ID,CPID_TYPE
FIELDPID COMPANY_NAME CP_ID CPID_TYPE
12 Bristol bb 47957 ORG
67 PRODUCTS LTD 47975 ORG
验证cpid_type必须只是“org” 谢谢您的帮助 阿伦
答案 0 :(得分:2)
使用PIVOT
表格运算符:
SELECT *
FROM tablename AS t
PIVOT
(
MAX(Value)
FOR FieldName IN([COMPANY_NAME],
[CP_ID],
[CPID_TYPE])
) AS p;
<强>更新强>
如果您想为CPID_TYPE
添加条件,可以执行以下操作:
WITH CTE AS
(
SELECT *
FROM tablename AS t
PIVOT
(
MAX(Value)
FOR FieldName IN([COMPANY_NAME],
[CP_ID],
[CPID_TYPE])
) AS p
)
SELECT *
FROM CTE
WHERE CPID_TYPE = 'ORG';
答案 1 :(得分:0)
看起来你的数据有点误。在
的情况下 13 CPID_TYPE ORG
可以更改为
12 CPID_TYPE ORG
结果查询将如Mahmoud Gamal
所述:
SELECT *
FROM tablename AS t
PIVOT
(
MAX(Value)
FOR FIELDPID IN([COMPANY_NAME],
[CP_ID],
[CPID_TYPE])
) AS p
结果将是正确的。可以在此处找到PIVOT
的其他信息:http://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx