2012-12-07 57 views
-1

我想根據使用SQL和LINQ的表實現一個行列表。 可用表如下:數據透視表OR Where條款中的LINQ和SQL

ID SName SValue LName LValue FName FValue 
1 TextS 1.1  null null null null 
2 null null TextL 2.2  null null 
3 null null null null TextF 3.3 

我想編寫一個查詢這可能會導致像這樣的列表:

listColumn1 listColumn2 
TextS  1.1 
TextL  2.2 
TextF  3.3 

請與專家諮詢幫助。 謝謝。

+0

你想這對使用SQL服務器端完成?你使用的是什麼rdbms? – Taryn

回答

1

您沒有指定您所使用的RDBMS,但如果你正在使用SQL Server 2008+並且要在SQL執行此操作,然後使用結果可以UNPIVOT數據:

SELECT x.listColumn1, 
    x.listColumn2 
FROM YourTable t 
CROSS APPLY 
(
    VALUES 
     (t.SName, t.SValue), 
     (t.LName, t.LValue), 
     (t.FName, t.FValue) 
) x (listColumn1, listColumn2) 
where x.listColumn1 is not null 
    and x.listColumn2 is not null 

SQL Fiddle with Demo

結果:

| LISTCOLUMN1 | LISTCOLUMN2 | 
----------------------------- 
|  TextS |   1.1 | 
|  TextL |   2.2 | 
|  TextF |   3.3 |