2017-06-10 13 views
-1

コード、値、テスト日付のLABTESTテーブルがあります。今私はテスト値を持っていますSQL Serverクエリの最新のレコード3件を表示

TEST_NAME  TEST_VALUE TEST_DATE 
BP   100/60  01-01-2017 
BP   100/50  02-01-2017 
BP   80/60   03-01-2017 
BP   70/60   04-01-2017 
CBC   200   01-01-2017 

私は3つの最新値を列にします。以下のようになり、結果たい:

TEST_NAME  VALUE-1 VALUE-2 VALUE-3  
BP   80/60  100/50 100/60 
CBC   200  NULL  NULL 
+0

は、あなたがこれまでにどのようなコードを書かれていますか? –

+0

なぜあなたは大文字で書いていますか? –

答えて

0
WITH X AS (
SELECT TEST_NAME , TEST_VALUE , ColName 
FROM 
    (
    SELECT * 
      , 'Value-' + CAST(ROW_NUMBER() OVER (PARTITION BY TEST_NAME 
           ORDER BY TEST_DATE DESC) AS VARCHAR(10)) ColName 
      , ROW_NUMBER() OVER (PARTITION BY TEST_NAME 
           ORDER BY TEST_DATE DESC) RN 
    FROM YourTableName 
    ) x 
WHERE rn <= 3 
) 
SELECT * 
FROM X 
     PIVOT (MAX(TEST_VALUE) 
       FOR ColName 
       IN ([Value-1] , [Value-2] , [Value-3]) 
      )p 
関連する問題