Sql 将类别添加到趋势表中
嗨,伙计们,我已经点头示意如何接近这一点有一段时间了,我只是卡住了。希望这个问题对社区有用 我有一个趋势表,数据如下表所示。我还有另一张表,上面有下面的第二张表。目标是在堆叠柱形图中显示数据。图表中的每一列将是当天的最后一个样本,每一列的系列组将是电路类别 数据每10分钟采样一次,但例如,我每天只输入2个样本:Sql 将类别添加到趋势表中,sql,report,trending,Sql,Report,Trending,嗨,伙计们,我已经点头示意如何接近这一点有一段时间了,我只是卡住了。希望这个问题对社区有用 我有一个趋势表,数据如下表所示。我还有另一张表,上面有下面的第二张表。目标是在堆叠柱形图中显示数据。图表中的每一列将是当天的最后一个样本,每一列的系列组将是电路类别 数据每10分钟采样一次,但例如,我每天只输入2个样本: time_stamp | circuit1 | circuit2 | circuit3 1/5/13 08:00 | 50 | 60 | 30 1/5/13 04:00 | 48 |
time_stamp | circuit1 | circuit2 | circuit3
1/5/13 08:00 | 50 | 60 | 30
1/5/13 04:00 | 48 | 55 | 26
1/4/13 08:00 | 42 | 52 | 22
1/4/13 04:00 | 40 | 51 | 20
等等
我有一个与此类似的类别表:
Circuit_name | circuit_category
circuit1 | category4
circuit2 | category2
circuit3 | category12
等等
从报告的角度来看,也许我没有想到一种更简单的方法来实现这一点,但为了像需求一样每天都得到一个堆积条形图,我想我需要一个查询,结果如下:
time_stamp | Circuit_name | Circuit_category | Value
1/5/13 08:00 | Circuit1 | category4 | 50
1/5/13 08:00 | Circuit2 | category2 | 60
1/5/13 08:00 | Circuit3 | category12 | 30
1/4/13 08:00 | Circuit1 | category4 | 42
1/4/13 08:00 | Circuit2 | category2 | 52
1/4/13 08:00 | Circuit3 | category12 | 22
我想我需要编写一个查询来获取按天分组的max(time\u stamp)
,但要旋转结果,以便将数据连接到category表。我一直在第一个表中使用pivot,因为我必须将表2中的circuit_名称与表1中的实际列名连接起来,但我一直陷入死胡同,因为我对pivot理解不够
不管怎样,如果有必要将电路类别硬编码到查询中,我愿意放弃表2,但这也是我遇到的问题。任何指导都将不胜感激
数据位于sql2008r2服务器上
谢谢 这看起来像是
unpivot
从列到行。。。SQL Server有以下功能:)我相信下面的查询可以改进和优化。请在您尝试后发表评论
select m.*, t.cat
from
(SELECT ts, name, value
FROM
(
SELECT ts,
CONVERT(varchar(20), C1) AS c1,
CONVERT(varchar(20), C2) AS c2,
CONVERT(varchar(20), C3) AS c3
FROM t2
) MyTable
UNPIVOT
(Value FOR name IN
(c1,c2,c3))AS MyUnPivot) m
left join t1 t
on t.name = m.name
;
结果:
TS NAME VALUE CAT
January, 05 2013 08:00:00+0000 c1 50 category4
January, 05 2013 08:00:00+0000 c2 60 category2
January, 05 2013 08:00:00+0000 c3 30 category12
January, 05 2013 04:00:00+0000 c1 48 category4
January, 05 2013 04:00:00+0000 c2 55 category2
January, 05 2013 04:00:00+0000 c3 26 category12
January, 04 2013 08:00:00+0000 c1 42 category4
January, 04 2013 08:00:00+0000 c2 52 category2
January, 04 2013 08:00:00+0000 c3 22 category12
January, 04 2013 04:00:00+0000 c1 40 category4
January, 04 2013 04:00:00+0000 c2 51 category2
January, 04 2013 04:00:00+0000 c3 20 category12
@user1960571请尝试一下这个查询。bonCodigo,非常感谢您的回复!我最近有几起火灾要扑灭。一旦我有机会测试这个,我一定会回应!!谢谢,马库斯