私は以下のようなデザインのテーブルを持っています。値のNULLではなくSQL 2012の動的ピボット
私は次のように私のテーブル内のデータを持っているHIST_TIMESTAMP datetime Unchecked
HIST_TIMESTAMP_DST char(1) Unchecked
TABLE_INDEX int Unchecked
HIS_CHANGED varchar(1) Checked
QUALITY tinyint Checked
VALUE real Checked
:表のインデックスとデータがすべてのテーブルインデックス
ごとに分を記憶している3744の
HIST_TIMESTAMP HIST_TIMESTAMP_DST TABLE_INDEX HIS_CHANGED QUALITY VALUE
2017-08-14 12:18:01.000 s 1 NULL 1 -3.927756
2017-08-14 12:19:01.000 s 1 NULL 1 -3.927756
2017-08-14 12:18:01.000 s 2 NULL 1 5.109651
2017-08-14 12:19:01.000 s 2 NULL 1 5.109651
2017-08-14 12:18:01.000 s 3 NULL 0 NULL
2017-08-14 12:19:01.000 s 3 NULL 0 NULL
2017-08-14 12:18:01.000 s 4 NULL 1 50
2017-08-14 12:19:01.000 s 4 NULL 1 50
2017-08-14 12:18:01.000 s 5 NULL 1 36.59948
2017-08-14 12:19:01.000 s 5 NULL 1 36.59948
2017-08-14 12:18:01.000 s 6 NULL 1 -122.7314
合計を今、私は私を変換するためのピボットをしたいです次のように列としてタイムスタンプが、Iは、ピボットTSQL コードを使用してみました:
use eta_user
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.HIST_TIMESTAMP)
FROM eta_user.ANALOG_HISTORY c
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'')
set @query = 'SELECT TABLE_INDEX, ' + @cols + ' from
(
select table_index
, value
, hist_timestamp
from eta_user.analog_history
) x
pivot
(
max(value)
for HIST_TIMESTAMP in (' + @cols + ')
) p '
execute(@query)
しかし、出力にはnullがありますが、なぜそれはわかりません。出力の画面は次のとおりです。
1 NULL NULL
2 NULL NULL
3 NULL NULL
4 NULL NULL
5 NULL NULL
6 NULL NULL
7 NULL NULL
8 NULL NULL
9 NULL NULL
10 NULL NULL
11 NULL NULL
12 NULL NULL
13 NULL NULL
14 NULL NULL
15 NULL NULL
16 NULL NULL
17 NULL NULL
18 NULL NULL
19 NULL NULL
20 NULL NULL
21 NULL NULL
22 NULL NULL
23 NULL NULL
24 NULL NULL
25 NULL NULL
26 NULL NULL
27 NULL NULL
28 NULL NULL
29 NULL NULL
30 NULL NULL
31 NULL NULL
32 NULL NULL
33 NULL NULL
34 NULL NULL
35 NULL NULL
36 NULL NULL
37 NULL NULL
38 NULL NULL
39 NULL NULL
40 NULL NULL
41 NULL NULL
42 NULL NULL
43 NULL NULL
44 NULL NULL
45 NULL NULL
46 NULL NULL
47 NULL NULL
48 NULL NULL
49 NULL NULL
50 NULL NULL
51 NULL NULL
52 NULL NULL
53 NULL NULL
54 NULL NULL
55 NULL NULL
56 NULL NULL
57 NULL NULL
58 NULL NULL
59 NULL NULL
60 NULL NULL
61 NULL NULL
62 NULL NULL
63 NULL NULL
64 NULL NULL
65 NULL NULL
66 NULL NULL
67 NULL NULL
68 NULL NULL
69 NULL NULL
70 NULL NULL
71 NULL NULL
72 NULL NULL
73 NULL NULL
74 NULL NULL
75 NULL NULL
76 NULL NULL
77 NULL NULL
78 NULL NULL
79 NULL NULL
80 NULL NULL
81 NULL NULL
82 NULL NULL
83 NULL NULL
84 NULL NULL
85 NULL NULL
86 NULL NULL
87 NULL NULL
テーブルインデックスカウントは正しいですが、値の代わりにヌルがあります。 誰かが値を取得するコードを修正する方法を教えてください。あなたのピボット利用の選択 キャスト(varchar型としてhist_timestamp(最大))では、事前
あなたの@colsを選択してください、それはあなたが持っていると思いますか? –
実行前に 'print @ query'を追加してください。 – Peter