【发布时间】:2018-01-22 04:34:28
【问题描述】:
SELECT PartyRelationshipID,[2] AS OrderGroup,[3] AS TaxStatus,[4] AS Area
FROM (
SELECT prs.PartyRelationshipID
,prs.PartyRelationshipSettingTypeID
,Value = CONVERT(INT, CASE WHEN IsNumeric(CONVERT(VARCHAR(12), prs.Value)) = 1 then CONVERT(VARCHAR(12), prs.Value) else 0 End)
FROM [Party].PartyRelationshipSetting prs) AS SourceTable
INNER JOIN Party.PartyRelationship prship ON SourceTable.PartyRelationshipID = prship.ID
INNER JOIN Party.PartyRole pr ON prship.ToPartyRoleID = pr.ID
INNER JOIN Party.Organization org ON pr.PartyID = org.PartyID
PIVOT
(
SUM(Value)
FOR PartyRelationshipSettingTypeID IN ([2],[3],[4])
)AS PivotTable
我得到了
为“数据透视表”多次指定了“ID”列
但在上述查询中,我没有使用 SELECT * 语句,或者我为每个 ID 选择添加别名以避免冲突。这个错误发生在哪一部分,如何解决?
当我在代码中添加以下行时出现此错误。
INNER JOIN Party.PartyRole pr ON prship.ToPartyRoleID = pr.ID
INNER JOIN Party.Organization org ON pr.PartyID = org.PartyID
还有在哪里提取 WHERE 子句以便仅选择基于 prship.ToPartyRoleID 的条目。 WHERE 子句不适合 PIVOT 内部或外部。
【问题讨论】:
标签: sql-server pivot inner-join