【问题标题】:SQL Server pivot and merge column possible?SQL Server 可以进行数据透视和合并列吗?
【发布时间】:2017-07-04 19:49:07
【问题描述】:

我有一张包含这些数据的表格:

| RESULT  |     TYPE    |    NAME   | 
+---------+-------------+-----------+
|  101.96 |  Indep Chk  |  Calcium  |  
|  101.96 |  Control    |  Calcium  |  
|  <5.00  |  Meth Blank |  Calcium  |  
|  1      |  Duplicate  |  Calcium  |    

我试图得到以下结果但没有成功。

期望的输出:

| [Indep Chk]  |  Control  | Duplicate | [Meth Blank] | Name     |
|  101.96      |   101.96  |   1       |  <5.00       |  Calcium |

我该怎么做?

谢谢

【问题讨论】:

  • 我忘了提到我的表会有不同的组件(名称和结果)。每个组件的“TYPE 列”永远不会改变。例如,我可以吃钙、锌、镁等。每个组件将始终具有 ("Indep Chk" , Control , Duplicate , "Meth Blank") 但不同的 Result。

标签: sql-server merge pivot


【解决方案1】:

如果我没记错的话,这是一个简单的PIVOT

DECLARE @Dummy TABLE(RESULT VARCHAR(100),[TYPE] VARCHAR(100),NAME VARCHAR(100));
INSERT INTO @Dummy VALUES
 ('101.96','Indep Chk','Calcium')
,('101.96','Control','Calcium')
,('<5.00','Meth Blank','Calcium')
,('1','Duplicate','Calcium')
,('a','Indep Chk','Other')
,('b','Control','Other')
,('c','Meth Blank','Other')
,('d','Duplicate','Other');

SELECT p.*
FROM
(
    SELECT *
    FROM @Dummy
) AS tbl
PIVOT
(
    MIN(RESULT) FOR [TYPE] IN ([Indep Chk],[Control],Duplicate,[Meth Blank])
) AS p;

结果

NAME    Indep Chk   Control Duplicate   Meth Blank
Calcium 101.96       101.96 1           <5.00
Other   a            b      d           c

【讨论】:

  • 感谢 Shnugo,它可以工作,但我的问题是我的表中有不同的组件(名称和结果)。类型列永远不会改变。
  • @Alberto 相同的查询也适用于多个名称。查看我的更新。
猜你喜欢
  • 1970-01-01
  • 2013-02-22
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 2011-12-17
  • 1970-01-01
相关资源
最近更新 更多