【发布时间】:2017-01-25 21:37:29
【问题描述】:
我正在尝试对数据库进行透视,以便只有某些行成为列。下面是我的表格的样子:
ID QType CharV NumV
1 AccNum 10
1 EmpNam John Inc 0
1 UW Josh 0
2 AccNum 11
2 EmpNam CBS 0
2 UW Dan 0
我希望表格如下所示:
ID AccNum EmpNam
1 10 John Inc
2 11 CBS
我要解决两个主要问题。
第一个:我试图获得的值并不总是在同一列中。因此,虽然 AccNum 始终在 NumV 列中,但 EmpName 始终在 CharV 列中。
第二:我需要找到一种方法来忽略我不想要的数据。在此示例中,它将是 QType 列中带有 UW 的行。
下面是我的代码:
SELECT *
FROM testTable
Pivot(
MAX(NumV)
FOR[QType]
In ([AccNum],[TheValue])
)p
但它给了我以下结果:
ID CharV AccNum TheValue
1 10 NULL
2 11 NULL
2 CBS NULL NULL
2 Dan NULL NULL
1 John IncNULL NULL
1 Josh NULL NULL
【问题讨论】:
标签: sql-server sql-server-2012 pivot