【问题标题】:Manipulation on table in SQL ServerSQL Server 中的表操作
【发布时间】:2013-06-22 09:47:26
【问题描述】:

我有桌子MailSummary

列:

Send(Int), Reply(Int), SRT(Nvarchar(10)), NAME(Nvarchar(10))

|Send| Reply| SRT| Name|
------------------------
| 100|     8|  10|    B|
|  30|     2|  20|    R|
|   5|     0|  30|    S|
-----------------------

我想转换表格并获得一个新的结果集,例如:

Sum(Send), Sum(Reply) 

并在新列下显示列中的名称和 SRT 的值

|Send| Reply| B | R | S |
-------------------------
| 135|    10| 10| 20| 30|

如何在 SQL 查询中执行此操作?

【问题讨论】:

  • 这是否只需要对三个值(B、R、S)起作用还是动态的?
  • 嗨,没关系。他们两个都会很有帮助,10 倍。
  • 感谢您的示例,但我怎样才能将两列(发送、回复)相加,并将行选择为列。我需要一个例子,如果你能证明我的问题会很有帮助。
  • 为什么SRTNvarchar(10) 显然存储整数?

标签: sql-server pivot


【解决方案1】:

这适用于您的场景:

SELECT SUM(Send) as Send,
       SUM(Reply) as Reply,
       MIN(CASE WHEN Name = 'B' THEN SRT END) AS B,
       MIN(CASE WHEN Name = 'R' THEN SRT END) AS R,
       MIN(CASE WHEN Name = 'S' THEN SRT END) AS S
FROM   TEST 

虽然对于更动态的查询,您需要a dynamic cross tab query

小提琴示例:http://sqlfiddle.com/#!3/d0ddc/12

【讨论】:

  • 这会对TEST 进行四次查询。只需要一个。
  • 谢谢。我将检查交叉表查询。你很有帮助。周末愉快。
猜你喜欢
  • 1970-01-01
  • 2022-06-13
  • 2017-11-02
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
相关资源
最近更新 更多