замена записей в таблице
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



замена записей в таблице Expand / Collapse
Автор
Сообщение
17.11.2005 9:57
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 21.11.2005 3:28
Сообщ.: 3, Visits: 34
Помогите пожалуйста!
Как из одной таблицы сначала выбрать записи по
равенству записей полей, разнится лишь поле "месяц",
потом в этих записях сделать замену, например:
в 1 месяц в поле1 вставить запись поля2 из 2 месяца,
во 2 месяц в поле1 вставить запись поля2 из 3 месяца и т.д.
Сообщ. #884986
17.11.2005 10:19
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Вопрос непонятен. Уточни его, пожалуйста. Интересует структура таблицы и пример того как должны измениться данные. То есть были такие такие строки, а стали вот такие.
Сообщ. #884990
18.11.2005 5:53
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 21.11.2005 3:28
Сообщ.: 3, Visits: 34
Сейчас немного переделала таблицу, но вопрос остался.
Структура такая: pole1, pole2, mes, period, zn
Выбираю в новую таблицу записи с периодом 102 за 2 месяц,
обновляю в новой таблице "period" - 102 на 101,
а в "mes" - 2 на 1.
Затем в первой таблице нужно удалить записи с периодом
101 и месяцем 1, чтобы вставить записи из новой.
Как это сделать? Или может как-то заменить записи без
создания промежуточной таблицы? Этот запрос
возможно ли сделать универсальным для всего
года, впрочем меняются только данные
за предыдущий месяц.
Сообщ. #885056
18.11.2005 10:05
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 29.09.2007 22:12
Сообщ.: 343, Visits: 3 388
[quote="eva_yk"]Сейчас немного переделала таблицу, но вопрос остался.
Структура такая: pole1, pole2, mes, period, zn
Выбираю в новую таблицу записи с периодом 102 за 2 месяц,
обновляю в новой таблице "period" - 102 на 101,
а в "mes" - 2 на 1.
Затем в первой таблице нужно удалить записи с периодом
101 и месяцем 1, чтобы вставить записи из новой.
Как это сделать? Или может как-то заменить записи без
создания промежуточной таблицы? Этот запрос
возможно ли сделать универсальным для всего
года, впрочем меняются только данные
за предыдущий месяц. [/quote]
а если так:
delete from tablename
where period=101 and mes=1
go
update tablename
set period=101, mes=1
where period=102 and mes=2
go
Сообщ. #885065
21.11.2005 3:34
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 21.11.2005 3:28
Сообщ.: 3, Visits: 34
Спасибо нормально прошло, но при этом исчезли записи
по 2 месяцу, немного оптимизировала и получила следующее:

SELECT *
INTO tab1
FROM fd_1001
WHERE (усл1) And (усл2) And (mes=2) And (period=102)
UPDATE tab1 SET mes = mes-1, period = 101
DELETE FROM fd_1001
WHERE (усл1) And (усл2) And (mes=1) And (period=101)
INSERT INTO fd_1001
SELECT *
FROM tab1
DROP TABLE tab1;

А возможно ли избежать промежуточной tab1?
Сообщ. #885197
21.11.2005 12:52
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 29.09.2007 22:12
Сообщ.: 343, Visits: 3 388
Я в MS SQL нулевой.. Из познаний: может, переменные временные применить ? Или написать ХП и уже ее с соответсвующими параметрами исполнять ?
Сообщ. #885245
21.11.2005 14:27
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 29.09.2007 22:12
Сообщ.: 343, Visits: 3 388
Если честно, я так и не понял, зачем такие телодвижения ?
если так ?
insert into fd_1001
(field1, field2,...,fieldN, period, mes)
select field1, field2,...,fieldN, period-1, mes-1 from
fd_1001
where mes=2 and period=102..
А там - кто его знает, что есть на самомо деле.. Тут вопрос, как поступить с PERIOD=101 и MES=1
Сообщ. #885254
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Alexey Spirin

Время GMT +3:00, Сейчас 9:13