0

こんにちは皆さん、私はしばらくこれにアプローチする方法をうなずいていましたが、行き詰まっています。この質問がコミュニティに役立つことを願っています。

以下の最初の表のようなデータを含む傾向表があります。下の 2 番目の表のようなカテゴリを持つ別の表があります。目標は、積み上げ縦棒グラフでデータを表示することです。チャートの各列はその日の最後のサンプルであり、各列の系列グループはサーキット カテゴリになります。

データは 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_stamp)が、結果をピボットして、データをカテゴリ テーブルに結合できるようにします。table2 の circuit_name を table1 の実際の列名に結合する必要があるため、最初のテーブルでピボットを使用して遊んでみましたが、ピボットを十分に理解していないため、行き止まりに陥り続けています。

いずれにせよ、回路カテゴリをクエリにハードコーディングする必要がある場合は、テーブル 2 を破棄しても構わないと思っていますが、ここでも行き詰っています。任意のガイダンスをいただければ幸いです。

データは sql2008r2 サーバー上にあります。

ありがとう!

4

1 に答える 1

0

これは列から行のように見えunpivotます...SQLServerにはこの機能があります:)次のクエリを改善および最適化できると思います。試した後、コメントをお願いします。

クエリ:

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
于 2013-01-09T11:11:25.123 に答える