我有一个查询给我这个结果:
|SystemName |SystemDescription |CertificateType |CertName |CertDate | ---------------------------------------------------------------------------- | ABC |Blah-blah ABC | X | X-865567 | 1 Jan | | ABC |Blah-blah ABC | Y | Y-8a5567 | 2 Jan | | ABC |Blah-blah ABC | Z | Z-86af67 | 3 Jan | | EFG |Blah-blah EFG | X | X-8kuhkj | 4 Jan | | EFG |Blah-blah EFG | Y | Y-uiiou | 5 Jan | | EFG |Blah-blah EFG | Z | Z-8lkjhu | 6 Jan | ----------------------------------------------------------------------------
我需要产生这样的结果:
|SystemName |SystemDescription | X-Name | X-Date | Y-Name | Y-Date | Z-Name | Z-Date| --------------------------------------------------------------------------------------- |ABC | Blah-blah ABC |X-865567 | 1 Jan |Y-8a5567| 2 Jan |Z-86af67| 3 Jan | |EFG | Blah-blah EFG |X-8kuhkj | 4 Jan |Y-uiiou | 5 Jan |Z-8lkjhu| 6 Jan | ----------------------------------------------------------------------------------------
换句话说,我需要在没有聚合的情况下进行旋转,并且至少有两列没有旋转。 是否可以在没有函数,存储过程和临时表的情况下生成它?我知道如何使用一些功能轻松实现这一点,我可以提出临时表的解决方案。
我想知道是否有可能使用PIVOT获得一个简洁的解决方案?
P.S。这不是一个功课,只是一个脑筋急转弯 - )
答案 0 :(得分:1)
没有必要使用PIVOT
来执行此操作,有时使用它比使用它更麻烦。至于不使用聚合函数 - 考虑一下,您希望按照SystemName
和SystemDescription
对记录进行分组,您无法选择使用聚合。没关系,只要像我一样使用MAX
,你就可以得到你想要的结果。您唯一需要担心的是,有两个记录具有相同SystemName
,SystemDescription
和CertificationType
的{{1}}或{{CertName
值不同的情况1}} - 在这种情况下,您需要一些方法来选择为该组选择哪些属性。
这是一个非Pivot示例:
CertDate