2017-02-15 5 views
0

私はこのデータを持つテーブルがある:SQL Serverピボットとマージ列は可能ですか?

| RESULT |  TYPE | NAME | 
+---------+-------------+-----------+ 
| 101.96 | Indep Chk | Calcium | 
| 101.96 | Control | Calcium | 
| <5.00 | Meth Blank | Calcium | 
| 1  | Duplicate | Calcium |  

私は成功せず、次の結果を取得しようとしています。

所望の出力:

| [Indep Chk] | Control | Duplicate | [Meth Blank] | Name  | 
| 101.96  | 101.96 | 1  | <5.00  | Calcium | 

が、私はこれを行うことができますどのように?

おかげ

+0

私は私のテーブルには、さまざまなコンポーネントを持っていることを言及するのを忘れてしまいました(名前と結果)。 「TYPE列」は、各コンポーネントごとに決して変更されません。例えば、私はカルシウム、亜鉛、マグネシウムなどを持つことができます。これらのコンポーネントのそれぞれは常に( "Indep Chk"、Control、Duplicate、 "Meth Blank")を持っていますが、結果は異なります。 – Alberto

答えて

0

私は、これは間違って取得しない場合、これは単純なPIVOTです:

DECLARE @Dummy TABLE(RESULT VARCHAR(100),[TYPE] VARCHAR(100),NAME VARCHAR(100)); 
INSERT INTO @Dummy VALUES 
('101.96','Indep Chk','Calcium') 
,('101.96','Control','Calcium') 
,('<5.00','Meth Blank','Calcium') 
,('1','Duplicate','Calcium') 
,('a','Indep Chk','Other') 
,('b','Control','Other') 
,('c','Meth Blank','Other') 
,('d','Duplicate','Other'); 

SELECT p.* 
FROM 
(
    SELECT * 
    FROM @Dummy 
) AS tbl 
PIVOT 
(
    MIN(RESULT) FOR [TYPE] IN ([Indep Chk],[Control],Duplicate,[Meth Blank]) 
) AS p; 

結果

NAME Indep Chk Control Duplicate Meth Blank 
Calcium 101.96  101.96 1   <5.00 
Other a   b  d   c 
+0

ありがとうShnugo、それは動作することができますが、私の問題は私のテーブルに異なるコンポーネント(名前と結果)があるということです。型の列は決して変更されません。 – Alberto

+0

@Alberto同じクエリが複数のNAMEでも機能します。私の更新を参照してください。 – Shnugo

+0

それは本当です:)ありがとうございました! – Alberto

関連する問題