2017-07-28 10 views
0

私は、列として少数の行を表示するためにSQLクエリをcassandraに書き込むことになっています。テーブルは、tag_type_idの値が1,2,3、... 42の範囲で、このようになります。エラー:ピボットを使用して、行をcassandraの列に変換します。

+--------+-----------+-------------------+-------+ 
|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| 
+--------+----------+--------------------+-------+ 

Iは、列としてではなく、同じテーブル内の行として見値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: line 3:0 no viable alternative at input '(' (select *from[(]...)
com.datastax.driver.core.exceptions.SyntaxError: line 3:0 no viable alternative at input '(' (select *from[(]...)

私は上記のようなテーブルを表示するために何をすべきでしょうか?

ありがとうございます。

+0

は自己結合に従って日時 –

+0

を試してみてください、あなたは、SQLサーバーやカサンドラを使用していますか? –

+0

私はcassandraを使用しています。私はこれらのクエリをSQLコンソールのcassandraに書いています –

答えて

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 
+0

こんにちは。異なるテーブル –

+0

確かに、私は自己結合を使用します。すべてが "テーブル"と呼ばれる同じテーブルにあります –

+0

@RadimBačaCassandraは結合をサポートしていません...そして、今度はsql-serverタグが削除されているので、 –

関連する問題