【问题标题】:SQL Select Issue: How to split Column valuesSQL Select 问题:如何拆分列值
【发布时间】:2020-09-18 12:04:48
【问题描述】:

我正在使用 SQL Server 2012 (Express Edition)。我有一张名为 Observations 的表。在该表中,我有 2 列“Observations,ObservationType”。表中只有两种观察结果:

  1. 临床
  2. 非临床

我的表结构是这样的..

Observations     ObservationType
-------------------------------
AAAA            Clinical
BBBB            Clincal
CCCC            Non-Clinical
DDDD            Clinical
EEEE            Non-Clinical

现在我必须根据观察类型明确选择所有行 我试过了,但我的输出是这样的

Clinical                 Non-Clinical
---------------------------------------
AAAA                        NULL
BBBB                        NULL
NULL                        CCCC
DDDD                        NULL
NULL                        EEEE

但我想要这样

Clinical                 Non-Clinical
---------------------------------------
AAAA                        CCCC
BBBB                        EEEE
DDDD

【问题讨论】:

  • 老实说,我建议不要使用该数据集。 为什么你想要这样的数据?
  • @Larnu 我想根据客户的要求以该格式导出数据

标签: sql sql-server select


【解决方案1】:

这有点棘手,因为一行中的列彼此无关。但是,您可以通过使用row_number() 生成序列号然后聚合来完成此操作:

select max(case when ObservationType = 'Clinical' then Observation end) as Clinical,
       max(case when ObservationType = 'Non-Clinical' then Observation end) as NonClinical
from (select o.*,
             row_number() over (partition by ObservationType order by Observation) as seqnum
      from Observations o
     ) o
group by seqnum
order by seqnum;

【讨论】:

  • !有用!谢谢你。你能再解释一下事情的进展吗? (如果你不介意的话)
猜你喜欢
  • 1970-01-01
  • 2015-08-22
  • 2011-07-05
  • 1970-01-01
  • 2011-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
相关资源
最近更新 更多