我想从我的数据库中输出下表
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"