Sql 使用不同的WHERE语句从单个列返回多列数据

Sql 使用不同的WHERE语句从单个列返回多列数据,sql,sql-server,Sql,Sql Server,我想从我的数据库中输出下表 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

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

    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查询轻松获取我的数据,即

  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列的其他名称,该名称也是保留字吗?:-)


这里我们创建两个临时表,并使用内部连接字符串来获得所需的结果集。另外,如果DateTime列对Measure1和Measure2具有唯一的值以获得所需的输出,则效果更好。在这里,我假设数据表的名称为“ABC”

在您的表中DateTime是唯一的吗?您看过Group By吗?您好,谢谢您的回答。数据库只是一个例子,但我相信您可能是新的:)您的查询绝对有意义,这可能是因为我现在的位置是午夜后:/谢谢:)
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;