Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Прошу помощи! По необходимости пришлось заниматься БД. Подскажите, как создать запрос или процедуру для такой задачи: Имеется таблица AnalogHistory c полями DateTime, TagName, Value. В поле DateTime (datetime) записано время, в TagName Tag1, Tag2,…,Tagn.(string) , в поле Value значения (real) Необходимо создать новую таб. Tab1 с полями DateTime(datetime), Tag1(real), Tag2(real),…,Tag20(real). И перенести данные из AnalogHistory в Tab1 Новая таблица должна постоянно пополняться новыми данными. БД находится на MSSQL 6.5 Благодарю за внимание! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2002, 13:34 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
1. Не совсем ясна задача. В AnalogHistory 20 записей, или надо взять первые 20, или надо переносить партиями по 20 записей. 2. Не рекомендуется использовать тип REAL. Он оставлен для совместимости и годится только для приближенных вычислений. 3. Не рекомендуется создавать таблицы с полями, несущими однотипную информацию. Никто не может сказать, что в дальнейшем этих полей будет достаточно или ни одно из них не будет лишним. Существующая у Вас структура AnalogHistory методически правильная. Если в строках 1-20 всегда содержиться одни и те же значения, то это означает только то, что это поле лишнее. Вместо него надо сделать поле ID типа INT и, если содержание TagName имеют значения, то создать маленькую табличку - ID Int, TagName varchar(n) Лично я никогда не создам таблицу с полями: Январь,Февраль,...,Декабрь. Неизвестно, может в следующем году будет реформа календаря и переход на 16-ти месячный год. Все в мире меняется, а программа должна работать! И никаких проблем 2000, 3000, 10567! Создать таблицу легче вручную, но если уж хочется на автомате - (самому написать CREATE TABLE наверное будет быстрее, чем текст этого запроса) Этот запрос создает таблицу из 20 первых строк Пользователь должен иметь разрешение на создание таблиц declare @createtabe varchar(8000) declare @i int select @createtabe='Create table AHNew ( "DateTime" datetime,' DECLARE AnalogHistory_Cursor CURSOR FOR SELECT TagName FROM AnalogHistory INTO @TagName OPEN AnalogHistory_Cursor FETCH NEXT FROM AnalogHistory_Cursor INTO @TagName select @createtabe=@createtabe+'"'+@TagName+'" real null,' WHILE @@FETCH_STATUS = 0 BEGIN select @createtabe=@createtabe+'"'+@TagName+'" real null,' FETCH NEXT FROM AnalogHistory_Cursor END CLOSE AnalogHistory_Cursor DEALLOCATE AnalogHistory_Cursor select @createtabe=substring(@createtabe,DATALENGTH(@createtabe)-1))+')' execute @createtabe go grant all on AHNew to public go Аналогично можно собрать запрос INSERT для вствки записей в новую таблицу, но писать его мне лень ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2002, 19:02 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32022350&tid=1824026]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 313ms |

| 0 / 0 |
