sql-server - SQL Server 将行转换为列
问题描述
我正在寻找一种在 SQL Server 中将行转换为列的方法,我尝试过 pivot 但仍然没有得到我想要的结果。
样品表
----------------------------------------
| Code | Value | Status | Desc |
----------------------------------------
| 000010 | 2 | Trx1 | X001 |
| 000010 | 1 | Trx2 | X001 |
| 000010 | 2 | Trx1 | X002 |
| 000010 | 2 | Trx2 | X002 |
| 000010 | 1 | Trx1 | X003 |
| 000010 | 1 | Trx2 | X003 |
从那张表中,我想得到类似的结果
----------------------------------------
| Code | Status1 | Status2 | Desc |
----------------------------------------
| 000010 | 2 | 1 | X001 |
| 000010 | 2 | 2 | X002 |
| 000010 | 1 | 1 | X003 |
我怎样才能建立这样的结果?
已经找到我自己想要的结果,谢谢
谢谢你
解决方案
CREATE TABLE #Table1
([Code] int, [Value] int, [Status] varchar(4), [Desc] varchar(4))
;
INSERT INTO #Table1
([Code], [Value], [Status], [Desc])
VALUES
(000010, 2, 'Trx1', 'X001'),
(000010, 1, 'Trx2', 'X001'),
(000010, 2, 'Trx1', 'X002'),
(000010, 2, 'Trx2', 'X002'),
(000010, 1, 'Trx1', 'X003'),
(000010, 1, 'Trx2', 'X003')
;
SELECT FORMAT([Code],'000000')[Code] ,MAX(CASE WHEN [STATUS]='Trx1' THEN [Value] END) AS [Value1] ,
MAX(CASE WHEN [STATUS]='Trx2' THEN [Value] END) AS [Value2],[Desc]
FROM #Table1
GROUP BY [Code],[Desc]
输出
Code Value1 Value2 Desc
10 2 1 X001
10 2 2 X002
10 1 1 X003
推荐阅读
- django - 创建新的 Django 应用程序时配置错误
- android - HMS 4.0 游戏浮标不显示 Games.getBuoyClient(activity).showFloatWindow();
- r - 从另一列 R 中按条件查找天数
- sql-server - Use a previous row value on where clause
- apollo - Apollo 客户端:cache.modify 不起作用?
- java - 使用堆栈检查给定表达式中的平衡括号
- android - 在 MotionLayout 内部查看不保留高程变化
- node.js - Next JS,Back 行为未调用 getInitialProps()
- artifactory - 为什么工件的渲染目录列表的读取访问行为不一致?
- php - 如何解决访问 laravel 路由时出现 CORS 错误