错误:使用pivot

时间:2017-07-28 07:44:56

标签: cassandra pivot cql3

我应该在cassandra中编写一个SQL查询来显示几行作为列。该表如下所示,tag_type_id值的范围为1,2,3,... 42。

+--------+-----------+-------------------+-------+
|asset_id|tag_type_id|           datetime|  value|
+--------+-----------+-------------------+-------+
|       1|         1|2017-07-28 11:25:...|1202.65|
|       1|         1|2017-07-28 11:24:...|1212.17|
|       1|         1|2017-07-28 11:23:...|1214.51|
|       1|         1|2017-07-28 11:21:...|1210.79|
|       1|         1|2017-07-28 11:20:...|1207.01|
|       1|         1|2017-07-28 11:19:...|1208.17|
|       1|         1|2017-07-28 11:18:...| 1205.7|
|       1|         1|2017-07-28 11:16:...|1206.11|
|       1|         1|2017-07-28 11:13:...|1208.53|
|       1|         1|2017-07-28 11:11:...|1207.82|
|       1|         1|2017-07-28 11:10:...|1205.05|
|       1|         1|2017-07-28 11:09:...|1205.56|
|       1|         1|2017-07-28 11:08:...|1204.55|
|       1|         1|2017-07-28 11:06:...|  92.17|
|       1|         1|2017-07-28 11:05:...|1213.93|
|       1|         1|2017-07-28 11:00:...|1205.13|
|       1|         1|2017-07-28 10:59:...|1204.42|
|       1|         1|2017-07-28 10:54:...|1209.42|
|       1|         1|2017-07-28 10:52:...| 1209.6|
|       1|         1|2017-07-28 10:50:...|1213.63|
+--------+----------+--------------------+-------+

我需要将{39}和40的tag_type_id视为列而不是在同一个表中看到一行。我希望它像这样

asset_id tag_type_id    datetime     value tag_type_id    datetime      value 
1            39       2017-07-28 11:25   90   40      2017-07-28 11:25   0.3
1            39       2017-07-28 11:24   91   40      2017-07-28 11:24   0.9
1            39       2017-07-28 11:23   90   40      2017-07-28 11:23   0.024
1            39       2017-07-28 11:22   89   40      2017-07-28 11:22   0.9
1            39       2017-07-28 11:21   91   40      2017-07-28 11:21   0.25

我尝试使用像here这样的枢轴来做它但是它会抛出错误:

select *
from
(
select tag_type_id, datetime, value
from energydata.demodata where asset_id = 1
) src
pivot
(
sum(value)
for tag_type_id in ([39],[40])
) piv;
  

com.datastax.driver.core.exceptions.SyntaxError:第3行:0没有可行性   输入的替代品'('(select * from [(] ...)
  com.datastax.driver.core.exceptions.SyntaxError:第3行:0没有可行性   输入的替代品'('(select * from [(] ...)

我该如何查看上面的表?

谢谢。

1 个答案:

答案 0 :(得分:0)

select t1.tag_type_id, t1.datetime, t1.value,
       t2.tag_type_id, t2.datetime, t2.value
from table t1
join table t2 on t1.tag_type = 39 and t2.tag_type = 40 and 
                 t1.datetime = t2.datetime