LINQ和SQL中的数据透视表OR Where子句

时间:2012-12-07 15:03:25

标签: c# sql linq

我正在尝试使用SQL和LINQ基于表来实现行列表。 可用表格如下:

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

请帮助您提供专业建议。 谢谢。

1 个答案:

答案 0 :(得分: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 |