Sql 将类别添加到趋势表中

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 |

嗨,伙计们,我已经点头示意如何接近这一点有一段时间了,我只是卡住了。希望这个问题对社区有用

我有一个趋势表,数据如下表所示。我还有另一张表,上面有下面的第二张表。目标是在堆叠柱形图中显示数据。图表中的每一列将是当天的最后一个样本,每一列的系列组将是电路类别

数据每10分钟采样一次,但例如,我每天只输入2个样本:

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,非常感谢您的回复!我最近有几起火灾要扑灭。一旦我有机会测试这个,我一定会回应!!谢谢,马库斯