【发布时间】:2018-01-04 04:22:24
【问题描述】:
我应该在 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[(]...)
我应该怎么做才能查看上面的表格?
谢谢。
【问题讨论】:
-
尝试自行加入相应的日期时间
-
你用的是sql-server还是cassandra?
-
我正在使用 cassandra 。我正在 cassandra 的 SQL 控制台中编写这些查询
-
cassandra 不支持 SQL.. 它使用 CQL...在 Cassandra 中所有这些复杂的子查询、连接等都不可用