我有一个像这样的标准表:
MyKey MyValue
--------------------------------
Var1 20
Var2 30
Var3 20
Var4 15
Var5 6
我希望它看起来像这样:
Var1 Var2 Var3 Var4
--------------------------------------------
20 30 20 15
未对数据进行分组或计算。到目前为止,我已经找到并尝试了很多方法:
SELECT
Var1,
Var2,
Var2,
Var4
FROM
(select *
from MyTable
) T
PIVOT
(
max(MyValue)
FOR MyKey in
(
'Var1', 'Var2', 'Var3', 'Var4'
)
)
as V
这样可行,但我得到了多行。
另外,我尝试使用CASE ...... WHEN:
Select MyValue,
Min(Case MyKey When 'Var1' Then MyKey End) Var1,
Min(Case MyKey When 'Var2' Then MyKey End) Var2,
...
FROM MyTable
WHERE MyKey in
('Var1', 'Var2', ...)
这不起作用,因为我无需分组。
我正在尝试做什么,如果是的话,怎么做?
编辑:
好吧,我想我已经确定了导致差异的原因,我编辑了SQL Fiddle。基本上,该表具有IDENTITY列。我没有意识到这会有所不同,但它会标记出来。
答案 0 :(得分:3)
SQL Fiddle
MS SQL Server 2008架构设置:
CREATE TABLE Table1
([pk] [int] IDENTITY(1,1) NOT NULL,
[MyKey] nvarchar(4) not null,
[MyValue] nvarchar(30) not null)
;
INSERT INTO Table1
([MyKey], [MyValue])
VALUES
('Var1', '20'), ('Var2', '30'),
('Var3', '20'), ('Var4', '15'),
('Var5', 'aaa')
;
查询1 :
SELECT
Var1,
Var2,
Var3,
Var4
FROM
(select [MyKey], [MyValue]
from Table1
) AS T
PIVOT
(
max(MyValue)
FOR MyKey in
(
Var1, Var2, Var3, Var4
)
)
AS V
<强> Results 强>:
| VAR1 | VAR2 | VAR3 | VAR4 |
|------|------|------|------|
| 20 | 30 | 20 | 15 |