SQL 合并行

标签 sql sql-server-2008 merge pivot aggregate-functions

我正在尝试分解并合并这样的表的结果。 (对于 Bingo!)我可以轻松地编写 CASE,以按第一个字母将列分开。然而,我最终显示的是空值,因为行被其 ID 视为不同的行。我在这里尝试了一些合并示例,但似乎被难住了。 ID 并不重要,我可以控制初始数据的收集方式。

ID  |  Number     |
====================
1   |      N6     | 
2   |      B22    |
3   |      B5     |
4   |      I9     |
5   |      N4     |


B  |  I  |  N  |  G  |  O  |
============================
B5 |  I9 | N4  |  -- | --  |
B22| --  | N6  |  -- | --  |

最佳答案

;WITH CTE AS
(
SELECT *,
       LEFT([Number],1) AS Letter,
       ROW_NUMBER() OVER (PARTITION BY LEFT([Number],1) 
                              ORDER BY CAST(SUBSTRING([Number],2,2) AS INT) ) AS RN
FROM Table1
)
SELECT 
    MAX(CASE WHEN Letter = 'B' THEN [Number] END) AS B,
    MAX(CASE WHEN Letter = 'I' THEN [Number] END) AS I,
    MAX(CASE WHEN Letter = 'N' THEN [Number] END) AS N,
    MAX(CASE WHEN Letter = 'G' THEN [Number] END) AS G,
    MAX(CASE WHEN Letter = 'O' THEN [Number] END) AS O
FROM CTE
GROUP BY RN

SQL Fiddle

关于SQL 合并行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14571836/

相关文章:

sql - PostgreSQL 存储需要引用资料

asp.net - MSSQL DateDiff 两个日期之间以及所有行的平均耗时

sql-server-2008 - 在对 SQL Server 2008 记录进行排序时忽略停用词

python - 如何合并/连接两个不同长度的 Pandas 数据帧?

merge - 合并两个已经在请求请求中的提交

python - 如何加入两个 Pandas 数据框中的单元格值?

PHP 使用 SSL 连接到 MS SQL

mysql - 从多列中选择但检索列名称

java - 更新时 hibernate 错误

sql - 为什么将 AVG(intger_column) 转换为 DECIMAL 返回至少六位小数?