私は2つのテーブルを持っています.1つはタイマー間隔で値をsensor_pool
変更するものですtemp_cel
センサープール
| address | temp_cels |
|---------------------|
| sensor1 | 83C |
| sensor2 | 82C |
| sensor3 | 85C |
| sensor4 | 85C |
| sensor5 | 84C |
動的に作成された列を持つ別のテーブルsensor_history
(センサーアドレスを列名として列を追加)。日時はキャプチャできましたがtemp_cels
、他のテーブルからはキャプチャできませんでした。
INSERT INTO sensor_history(datetime) VALUES(" & dtfStr & ")
dtfStr = timestamp
センサー履歴
| datetime | sensor1 | sensor2 | sensor3 | sensor4 | sensor5 |
|------------------------------------------------------------------|
| 12022013080513 | NULL | NULL | NULL | NULL | NULL |
これまでのところ、forループ内にあるこのクエリがあります(列を取得するため)
IF EXISTS(SELECT datetime FROM sensor_history where datetime='" & dtfStr & "')
MERGE sensor_history sh USING sensor_pool sp ON [(SELECT '" & dgvSensors.Rows(l).Cells(0).Value & "'
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='sensor_history' AND COLUMN_NAME='" & dgvSensors.Rows(l).Cells(0).Value & "')] = sp.sens_code
WHEN MATCHED THEN UPDATE SET sh.[" & dgvSensors.Rows(l).Cells(0).Value & "] = st.temp_cels
WHEN NOT MATCHED BY TARGET THEN INSERT ([" & dgvSensors.Rows(l).Cells(0).Value & "]) VALUES (st.temp_cels);"
dgvSensors の datagridview は、sensor_pool テーブルと同じです。vb.net + SQL Server
これは私の目標結果がどうあるべきかです:
| datetime | sensor1 | sensor2 | sensor3 | sensor4 | sensor5 |
|------------------------------------------------------------------|
| 12022013080513 | 83C | 82C | 85C | 85C | 84C |
誰かが私を助けてくれることを願っています
ありがとうございました