SQL 不聚合转置多列 table

SQL transpose multi column table without aggregation

我有一个格式的数据集;

并且需要格式为;

上周我在 pivot 和 unpivot 方面进行了各种尝试,但我不是真正的程序员,知道什么时候向大人寻求帮助。

数据库是 运行 MSSQL 2012,数据集将由每个 ClinicalTrialID 的 14 个 Mode_Antibiotics、ModeQualifier 和 ModeMIC 条目组成,总共大约有 3000 个 ClinicalTrialID。

在纯 SQL 动态中很难做到这一点。如果我新建 T-SQL,我会编写一个 table 函数返回所需的数据集。但是,在纯 ANSI SQL 中,由于您没有那么多列,您可以使用如下内容:

SELECT 
  ClinicalTrialID,
  MAX(CASE 
    WHEN Mode_Antibiotic = 'Amikacin' 
    THEN Mode_Antibiotic 
  END) Antibiotic1,
  MAX(CASE 
    WHEN Mode_Antibiotic = 'Amikacin' 
    THEN Mode_Qualifier 
  END) Qualifier1,
  MAX(CASE 
    WHEN Mode_Antibiotic = 'Amikacin' 
    THEN Mode_MIC 
  END) MIC1,
  MAX(CASE 
    WHEN Mode_Antibiotic = 'Ampicillin' 
    THEN Mode_Antibiotic 
  END) Antibiotic2,
  MAX(CASE 
    WHEN Mode_Antibiotic = 'Ampicillin' 
    THEN Mode_Qualifier 
  END) Qualifier2,
  MAX(CASE 
    WHEN Mode_Antibiotic = 'Ampicillin' 
    THEN Mode_MIC 
  END) MIC2,
  -- repeat 12 times with the remaining antibiotics
FROM t
GROUP BY ClinicalTrialID;

希望对您有所帮助。