2016-05-11 4 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 

Теперь я хочу эту информацию в следующий формат с Pivot

tablekeyid attr1 attr2 
    1  value2 NULL 
    2  NULL  value3 

В принципе, это должно привести к последним значениям.

  1. Как это можно сделать с помощью агрегатной функции Pivot?

  2. Может ли это быть отфильтровано на основе имени табло?

  3. Поддерживает ли опорный стержень Entity Framework 5 (EF5)?

ответ

1

Попробуйте это (работает в сервере SQL),

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 
Смежные вопросы