0

我有一个查询,它返回如下所示的数据:

Project Name   Analyte   Result

A                 BOD       4mg/l

A              COD       10mg/l

B              BOD       4mg/l

B              COD       10mg/l

但我需要它看起来像这样:

Project Name   Analyte   Result   Analyte  Result

A              BOD       4mg/l        COD      10mg/l

B              BOD       4mg/l        COD      10mg/l

我不知道如何用 sql 来做到这一点。枢轴功能会这样做吗?如何?

4

2 回答 2

0

您没有指定您正在使用什么 RDBMS,但您可以轻松地使用带有 CASE 表达式的聚合函数来获得结果:

select
  projectName,
  max(case when Analyte = 'BOD' then Analyte end) Analyte_BOD,
  max(case when Analyte = 'BOD' then Result end) Result_BOD,
  max(case when Analyte = 'COD' then Analyte end) Analyte_COD,
  max(case when Analyte = 'COD' then Result end) Result_COD
from yourtable
group by projectname;

请参阅带有演示的 SQL Fiddle

于 2013-10-29T15:26:18.607 回答
0

假设你总是有一个BOD和一个COD

SELECT
  [a].[Project Name],
  [a].[Analyte] AS [Analyte1],
  [a].[Result] AS [Result1],
  [b].[Analyte] AS [Analyte2],
  [b].[Result] AS [Result2]
FROM
  [Results] [a]
  JOIN [Results] [b]
    ON [a].[Project Name] = [b].[Project Name]
WHERE
  [a].[Analyte] = 'BOD'
  AND [b].[Analyte] = 'COD';

SqlFiddle

于 2013-10-29T14:01:06.263 回答