2016-09-26 15 views
0

それぞれの一意の行( '場所'フィールド別)を361回(0〜360)複製するselect文を作成しようとしています。シーケンス(0〜360)を示す追加の列も作成されます。これは、radiusフィールドとdegreeフィールドを使用してTableau内の円としてレンダリングすると、緯度がそれぞれ&である座標の長さを計算することです。SQL:追加の実行シーケンスフィールドを持つ行の複製

これは元のサンプルテーブルです。

enter image description here

これは、最終的な所望の出力です。誰もが

enter image description here

を助けることができますか?カンマで

サンプルデータが区切ら〜

Location,Radius,Latitude,Longitude 
A,500,31.4799,88.38783 
B,1000,35.580941,77.01125 
C,800,37.492528,88.797115 

EDIT:元の表の50のプラスの行があります。

+0

どのデータベースをお使いですか? –

+0

それはちょうど – Jake

答えて

1

私はVerticaがPostgresのgenerate_series()に相当するとは思いません。 Verticaで

with n as (
     select row_number() over() - 1 as n 
     from (select s.* from sample s limit 361) s 
    ) 
select s.*, n.n as degress 
from sample s cross join 
    n; 

order byrow_number()機能のためのオプションである、:あなたは、少なくとも361行を持つテーブルを持っている場合は、それを模擬することができます。

+0

ああ親愛なる、問題は、私はテーブルの中に50プラス行を持っている〜あなたの意見の任意の選択肢ですか? – Jake

+1

ああ、3行目の 'sample'表を360行以上の他の表に置き換えると、元の表の行に依存しなくなります。 urは正しいとマークします。ありがとうございました! – Jake

0

また、すべての任意のテーブルを必要とせずにシーケンスを生成するためにVerticaでtime seriesを乱用することができます:基本的に私たちは0〜360秒のタイムスタンプするために開始を設定/

with mydegrees as (
    SELECT extract(epoch from slice_time - to_timestamp(0)) Degree 
    from (select to_timestamp(0) ts 
      union all 
      select to_timestamp(0) + interval '360 seconds') x 
    TIMESERIES slice_time AS '1 second' OVER (ORDER BY ts) 
) 
select t.*, d.Degree 
from mytable t cross join 
    mydegrees d; 

、我々は「秒を抽出各タイムスライス(1秒のタイムスライスを使用する)について、「エポック0」から開始する。

関連する問題