我正在尝试将行值转换为没有聚合的列。以下是以下示例
SampleID TRGTNAME CountValue
S1 K 39.5
S1 L 23.5
S1 M -1.5
S2 K 4.5
S2 L 7.5
S2 M 8.3
我需要的是一个查询,为每个样本返回一行,如下所示:
SampleID TRGTCountValueK TRGTCountValueL TRGTCountValueM
S1 39.5 23.5 -1.5
S2 4.5 7.5 8.3
表samp_tst包含列(SampleID,TRGTName,CountValue)
PIVOT操作不需要聚合。非常感谢您的帮助
答案 0 :(得分:0)
您可以在使用PIVOT时使用MAX,因为您不需要聚合。
PIVOT
,就像这样
SELECT * FROM
(SELECT *
FROM MyTable )T
PIVOT
( MAX("CountValue") for "TRGTNAME" in ('K' as TRGTNAMEK,
'L' TRGTNAMEL,
'M' TRGTNAMEM))pvt
你可以使用基于案例的MAX聚合来实现,这类似于PIVOT
SELECT "SampleID",
MAX( CASE WHEN "TRGTNAME" = 'K' THEN "CountValue" END) as TRGTCountValueK,
MAX( CASE WHEN "TRGTNAME" = 'L' THEN "CountValue" END) as TRGTCountValueL,
MAX( CASE WHEN "TRGTNAME" = 'M' THEN "CountValue" END) as TRGTCountValueM
FROM MyTable
GROUP BY "SampleID"