powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сдвинуть значения столбцов относительно друг друга
8 сообщений из 8, страница 1 из 1
Как сдвинуть значения столбцов относительно друг друга
    #32008552
Konnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица с двумя столбцами:

Условное_обозначение, Величина
О 2
О 4
Т 6
О 8
С 10
С 12

Необходимо сдвинуть значения столбца "Условное_обозначение" относительно "Величины", скажем на 3 строки, т.е. должно получиться следующее

Условное_обозначение, Величина
О 2
С 4
С 6
О 8
О 10
Т 12
...
Рейтинг: 0 / 0
Как сдвинуть значения столбцов относительно друг друга
    #32008553
lodevar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как насчет временной таблицы?
...
Рейтинг: 0 / 0
Как сдвинуть значения столбцов относительно друг друга
    #32008560
andy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделайте поле с автоинкрементом в этой таблице (id), затем перенесите его и, скажем, Величину в другую таблицу, там увеличьте значения поля id на скажем 3, а затем 3 самых больших сделайте 1,2,3 и собственно можно выбирать Условное обозначение из первой таблицы, а величину из второй, а пересекать их по id.
...
Рейтинг: 0 / 0
Как сдвинуть значения столбцов относительно друг друга
    #32008563
Konnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем огромное спасибо!
Прочел ваши ответы и меня осенило!!!!!
Поле "Величина" у меня кратная, поэтому вроде все получается сразу

set d=8
update t1
set t1.c=t2.c
from prob t1, prob t2
where (t1.i+d=t2.i and
t1.i+d<=(select max(i) from prob))or
(t1.i+d>(select max(i) from prob)and
t2.i=t1.i+d-(select max(i) from prob))

где с-"Условное_обозначение", i- "Величина"
...
Рейтинг: 0 / 0
Как сдвинуть значения столбцов относительно друг друга
    #32008564
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, задача поставлена не совсем корректно. Она предполагает что записи идут в таблице именно в таком порядке, как Вы это предполагаете. На самом же деле они могут идти в каком то дргом порядке. Соответственно будет нарушена логика. Исключение - если данные которые надо переставить упорядочены по одному из столбцов (на логическом уровне). Т.е конкретно Ваш пример можно решить но пример вида
О 112
О 4
Т 6
О 8
С 10
С 12
решить навряд ли получится. Т.е. он может решится, но при добавлении новых данных работать некорректно.
Ну а если исходные данные изначально логически упорядочены, тогда так:

create table sourcetab(a varchar, b int)
insert into sourcetab values ('О',2)
insert into sourcetab values ('О',4)
insert into sourcetab values ('Т',6)
insert into sourcetab values ('О',8 )
insert into sourcetab values ('С',10)
insert into sourcetab values ('С',12)

---------------------------------------
Create table #temp (id int identity, a varchar, b int)
insert into #temp(a,b) select * from sourcetab order by b
declare @num int
select @num=count(*) from #temp
select t1.a, t2.b from #temp t1 join #temp t2 on t1.id-1=(t2.id+2) % @num
drop table #temp
...
Рейтинг: 0 / 0
Как сдвинуть значения столбцов относительно друг друга
    #32008582
Konnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Объясните чайнику где сдвиг.
...
Рейтинг: 0 / 0
Как сдвинуть значения столбцов относительно друг друга
    #32008603
lodevar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не сдвиг, а новая таблица.
...
Рейтинг: 0 / 0
Как сдвинуть значения столбцов относительно друг друга
    #32008615
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 konik: Не понял, Вы хотите сказать, что у Вас не сдвигается что ли???
У меня из Вашего примера
О 2
О 4
Т 6
О 8
С 10
С 12

получается то что Вы же и хотите получить:
О 2
С 4
С 6
О 8
О 10
Т 12
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сдвинуть значения столбцов относительно друг друга
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]