加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在没有聚合函数的sql server中创建数据透视查询

发布时间:2020-12-14 01:05:47 所属栏目:百科 来源:网络整理
导读:我使用MS SQL SERVER 2008和我有以下数据: select * from account;| PERIOD | ACCOUNT | VALUE |----------------------------| 2000 | Asset | 205 || 2000 | Equity | 365 || 2000 | Profit | 524 || 2001 | Asset | 142 || 2001 | Equity | 214 || 2001
我使用MS SQL SERVER 2008和我有以下数据:
select * from account;

| PERIOD | ACCOUNT | VALUE |
----------------------------
|   2000 |   Asset |   205 |
|   2000 |  Equity |   365 |
|   2000 |  Profit |   524 |
|   2001 |   Asset |   142 |
|   2001 |  Equity |   214 |
|   2001 |  Profit |   421 |
|   2002 |   Asset |   421 |
|   2002 |  Equity |   163 |
|   2002 |  Profit |   325 |

我想让他们成为这样:

| ACCOUNT | 2000 | 2001 | 2002 |
--------------------------------
|   Asset |  205 |  142 |  421 |
|  Equity |  365 |  214 |  163 |
|  Profit |  524 |  421 |  325 |

我试图查询使用枢轴查询,但值必须使用聚合函数,结果是不适当的。我该怎么办?

SELECT *
FROM
(
SELECT [Period],[Account],[Value]
FROM TableName
) AS source
PIVOT
(
    MAX([Value])
    FOR [Period] IN ([2000],[2001],[2002])
) as pvt

其他方式,

SELECT ACCOUNT,MAX(CASE WHEN Period = '2000' THEN Value ELSE NULL END) [2000],MAX(CASE WHEN Period = '2001' THEN Value ELSE NULL END) [2001],MAX(CASE WHEN Period = '2002' THEN Value ELSE NULL END) [2002]
FROM tableName
GROUP BY Account

> SQLFiddle Demo (both queries)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读