2016-05-11 5 views
0

私は形式のデータを持っている:表中のSQL Serverのピボットデータ

pkid, tablename, tablekeyid, attrname, attrvalue,createdate 

データは、以下のようなattrnameの繰り返しになります

1, Foo, 1, attr1, value1, 2016-01-01 02:02:02 
2, Foo, 1, attr1, value2, 2016-02-01 03:03:03 
3, Foo, 2, attr2, value3, 2016-02-01 03:03:03 

今、私はこの情報が欲しいですピボットを使用した次の形式

tablekeyid attr1 attr2 
    1  value2 NULL 
    2  NULL  value3 

基本的には最新の値にする必要があります。

  1. これはPivotの集約機能でどのように達成できますか?

  2. これはtablenameに基づいてフィルタリングできますか?

  3. エンティティフレームワーク5(EF5)はピボットをサポートしていますか?

答えて

1

、この(SQL Serverで作品を)試してみてください

SELECT tablekeyid, 
     attr1, 
     attr2 
FROM (SELECT tablekeyid, 
       attr1, 
       attr2, 
       ROW_NUMBER() 
       OVER(
        PARTITION BY tablekeyid 
        ORDER BY tablekeyid, createdate DESC) AS RN 
     FROM #Your_Pivot_Table 
       PIVOT(Max(attrvalue) 
        FOR attrname IN([attr1], 
            [attr2])) AS PivotSales)A 
WHERE A.RN = 1 
関連する問題