我一直在寻找如何做到这一点,但我还没有找到一个例子
我的数据如下:
batchid wigitid
------- -------
538217 MT8
538217 MT6
538217 M89A
538218 MT8
538218 M89D
538218 M90
我想翻转数据,看起来像这样:
BatchId MT8 MT6 M89A M89D M90
------- --- --- --- ---- ---
538217 * * *
538218 * * *
我可以通过光标循环记录,但我相信可能有更好的方法。
答案 0 :(得分:1)
Select *
From (
Select batchid, wigitid, '*' wigitname
From BATCHMAST
) As BMast
Pivot (MAX(wigitname) For WigitId In ([MT8],[MT6],[M89A],[M89D],[M90])) As Pvt
如果你不这样做,也可以在下面试试。在结果中想要null
Select batchid,
ISNULL([MT8],'') [MT8],
ISNULL([MT6],'')[MT6],
ISNULL([M89A],'')[M89A],
ISNULL([M89D],'')[M89D],
ISNULL([M90],'')[M90]
From (
Select batchid, wigitid, '*' wigitname
From BATCHMAST
) As BMast
Pivot (MAX(wigitname) For WigitId In ([MT8],[MT6],[M89A],[M89D],[M90])) As Pvt
答案 1 :(得分:0)
请尝试以下代码SQL Fiddle
SELECT
BatchID,
REPLACE(NULLIF(MT6,0), 1, '*') AS MT6,
REPLACE(NULLIF(MT8,0), 1, '*') AS MT8,
REPLACE(NULLIF(M89A,0), 1, '*') AS M89A,
REPLACE(NULLIF(M89D,0), 1, '*') AS M89D,
REPLACE(NULLIF(M90,0), 1, '*') AS M90
FROM
(
SELECT BatchID, WigitID FROM Information
) a
PIVOT
(
COUNT(WigitID) FOR WigitID IN (MT6, MT8, M89A, M89D, M90)
) b