我想从我的数据库输出下表
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 Report Builder中构建漂亮的图片。
有问题的数据库包含数百万个值的数百万个值。我正在运行MSSQL 2008。
我查看了Union,Case等,但无法使任何方法正常工作。
希望有人可以帮助我。我很难过,并且不知道正确的短语来搜索这个问题的帮助。如果我能破解这个坚果那么我几乎拥有所有工具来做我想做的一切。
提前谢谢
答案 0 :(得分:5)
您是否找不到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]
答案 1 :(得分:2)
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个临时表,并使用内部连接来获得所需的结果集。如果DateTime列具有针对Measure1和Measure2的唯一值以获得所需的输出,那将更好。这里我假设数据表的名称为'ABC'