在 T-SQL 语句中合并结果

Posted

技术标签:

【中文标题】在 T-SQL 语句中合并结果【英文标题】:Merging results in T-SQL statement 【发布时间】:2009-01-28 15:34:53 【问题描述】:

我要查询:

select id, name, num from pending  

id, name, num
1, first, 1  
3, third, 12  
select id, name, num from completed

id, name, num
1, first, 100
2, second, 20

我希望输出使用 T-SQL 将这些组合起来,可能就像一个数据透视表。


id, name, pending, completed, total
1, first, 1, 100, 101
2, second, null, 20, 20
3, third, 12, null, 12

这怎么写?

【问题讨论】:

你有哪个版本的 SQL Server? 【参考方案1】:

不需要枢轴。

SELECT
    COALESCE(p.id, c.id),
    COALESCE(p.name, c.name),
    p.num AS pending,
    c.num AS completed,
    COALESCE (p.num, 0) + COALESCE (c.num, 0) AS total
FROM
    pending p
    FULL OUTER JOIN
    completed c ON p.id = c.id

COALESCE 是 ANSI SQL,但你也可以使用 ISNULL

【讨论】:

以上是关于在 T-SQL 语句中合并结果的主要内容,如果未能解决你的问题,请参考以下文章

SQL 连接的补充?需要 T-SQL 帮助

结果集中的 XML 输出 (T-SQL)

在 db2 中合并两个 select 语句的结果

统计每门课程的选课人数和平均分,结果只显示平均分大于等于80的记录(使用T-SQL语句进行单表查询:)

T-SQL:生成数字组合并保存到表中

SQL Server 之T-SQL基本语句