从具有不同 WHERE 语句的单个列返回多列数据



我想从我的数据库中输出下表

    DateTime   |  Measure 1  |  Measure 2
    5-5-2011   |   35        |    45
    4-5-2011   |   23        |    56
    3-5-2011   |   22        |    56

我有问题的数据库包含这种近似布局中的数据

    DateTime   |  Values     |  ID
    5-5-2011   |   35        |  Measure 1
    5-5-2011   |   45        |  Measure 2
    4-5-2011   |   23        |  Measure 1
    4-5-2011   |   56        |  Measure 2
    3-5-2011   |   22        |  Measure 1
    3-5-2011   |   56        |  Measure 2

无论如何,我可以在单个SQL查询中获得所需的输出。我可以通过多个选择查询轻松获取我的数据,即

  SELECT DateTime, Values AS Measure 1 FROM database.table WHERE ID='Measure 1'
  SELECT DateTime, Values AS Measure 2 FROM database.table WHERE ID='Measure 2'

但是,我需要单个查询中的数据才能在 MSSQL 报表生成器中生成漂亮的图片。

有问题的数据库包含数百个度量值的数百万个值。我正在运行MSSQL 2008。

我已经研究了联盟,案例等,但无法获得任何正常工作的方法。

希望有人可以帮助我。我很困惑,不知道正确的短语来寻求有关此问题的帮助。如果我能破解这个坚果,那么我将拥有几乎所有的工具来完成我想做的一切。

提前谢谢你

您不能为 ID 列找到其他名称,这也是一个保留字吗? :-)

SELECT
    [DateTime],
    MAX(CASE WHEN ID='Measure 1' THEN [Values] END) as Measure1,
    MAX(CASE WHEN ID='Measure 2' THEN [Values] END) as Measure2
FROM
    [table]
GROUP BY
    [DateTime]
Create Table #Measure1 (DateTime datetime,Values int)
Insert INTO #Measure1 
Select DateTime,Values from ABC where ID = 'Measure 1'
Create Table #Measure2 (DateTime datetime,Values int)
Insert INTO #Measure1 
Select DateTime,Values from ABC where ID = 'Measure 2'
Select ABC.DateTime, #Measure1.Values AS 'Measure 1',#Measure2.Values AS 'Measure 2'
FROM ABC,#Measure1,#Measure2
WHERE ABC.DateTime  = #Measure1.DateTime AND #Measure1.DateTime = #Measure2.DateTime
DROP Table #Measure1; DROP Table #Measure2;

在这里,我们尝试创建 2 个临时表,并使用内部连接 tring 来获得所需的结果集。此外,如果日期时间列具有针对 Measure1 和 Measure2 的唯一值以获得所需的输出,那就更好了。在这里,我假设数据表的名称为"ABC"

最新更新