SQL Server或C#转置

时间:2014-06-11 22:07:43

标签: c# sql sql-server linq

我知道这似乎是一个非常基本的问题,但它不是;我不能使用SQL Server数据透视表,因为我不想要SUM,我只想转置。

如何在C#LINQ中的SQL查询中转置SQL数据?哪个是最快的?

常规数据

| Company | Product | Count |
|---------|---------|-------|
|   Cloud |   Nokia |    10 |
|   Cloud | Samsung |    30 |
|   Cloud |    Sony |    42 |
|    Coms |   Apple |    34 |
|    Coms |   Nokia |    39 |
|    Coms | Samsung |    11 |
|    Coms |    Sony |    22 |
|      RP |   Nokia |    22 |
|      RP | Samsung |    29 |
|      RP |    Sony |    22 |

进入这个:

| Company | Nokia | Samsung | Sony |  Apple |
|---------|-------|---------|------|--------|
|   Cloud |    10 |      30 |   42 |      0 |
|    Coms |    39 |      11 |   22 |     34 |
|      RP |    22 |      29 |   22 |      0 |

1 个答案:

答案 0 :(得分:1)

此查询:

SELECT 
    Company
    , [Nokia]
    , [Samsung]
    , [Sony]
    , [Apple]
FROM
    YourTable
PIVOT (
    MAX(Count) FOR Product IN ([Nokia], [Samsung], [Sony], [Apple])
)
AS p

将产生:

| COMPANY | NOKIA | SAMSUNG | SONY |  APPLE |
|---------|-------|---------|------|--------|
|   Cloud |    10 |      30 |   42 | (null) |
|    Coms |    39 |      11 |   22 |     34 |
|      RP |    22 |      29 |   22 | (null) |

SQLFiddle Demo