Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вычисления в таблице  [new]
Rusich2012
Member

Откуда:
Сообщений: 162
Здравствуйте!

Есть вопрос, давно бьюсь, не получается пока сделать.

Вопрос такой. Есть таблица. Нужно, что бы в поле Res выводились те числа, что указаны в таблице.

Берем DtPos = 1.
Cмотрим RowPos: если 1, то Res = 1, если 2, то Res = 2 и т.д.

Берем DtPos = 2.
Cмотрим RowPos: если 1, то Res = 3, если 2, то Res = 4 и т.д.

Берем DtPos = 3.
Cмотрим RowPos: если 1, то Res = 5, если 2, то Res = 6 и т.д., если 3, то Res = 7 и т.д.

Ну и т.д.

id	Pos	RowPos	DtPos	Res
1	1	1	1	1
2	1	2	1	2
3	2	1	1	1
4	3	1	1	1
5	1	1	2	3
6	2	1	2	3
7	3	1	2	3
8	3	2	2	4
9	1	1	3	5
10	1	2	3	6
11	1	3	3	7


Как можно такое реализовать?
Буду очень благодарен за ответы!
3 дек 15, 14:27    [18508507]     Ответить | Цитировать Сообщить модератору
 Re: Вычисления в таблице  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
Rusich2012,

используйте Case
Что-то в таком духе
select Res = RowPos + case when DtPos = 1 then 1 when DtPos = 2 then 2 when  DtPos = 3 then 4 ....End
...
3 дек 15, 14:33    [18508566]     Ответить | Цитировать Сообщить модератору
 Re: Вычисления в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104751
Rusich2012
Берем DtPos = 1.
Cмотрим RowPos: если 1, то Res = 1, если 2, то Res = 2 и т.д.

Берем DtPos = 2.
Cмотрим RowPos: если 1, то Res = 3, если 2, то Res = 4 и т.д.

Почему вдруг для одного и того же "RowPos если 1" Res то 1, то 3, то 5 становится ?
А для "RowPos если 2" Res то 2, то 4, то 6 становится ?
3 дек 15, 14:39    [18508621]     Ответить | Цитировать Сообщить модератору
 Re: Вычисления в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47052
Res=RowPos+2*(DtPos-1)
Правильно?
3 дек 15, 15:01    [18508767]     Ответить | Цитировать Сообщить модератору
 Re: Вычисления в таблице  [new]
Rusich2012
Member

Откуда:
Сообщений: 162
Glory,
Ээээ, как бы объяснить...у меня все сложно :)
Я это хочу выводить в грид.
У грида 3 столбца. Pos это как раз столбцы.
RowPos это строкт в столбце.

DtPos это день (я сократил, что бы понятнее было).
Res это место, в какую строку выводить данные(id).

Получается:
DtPos = 1, это 1-е число, скажем, января.
Далее,
DtPos = 1 это первый столбец. В данном примере у него max(RowPos) = 2, т.е., 2 строки.
DtPos = 2 - второй столбец, у него max(RowPos) = 2, т.е., 2 строки.
DtPos = 3 - третий столбец, у него max(RowPos) = 3, т.е., 3 строки.

Я вложил скрин, что в итоге должно быть. Я выбрал такой путь заполнения, другого не нашел...

К сообщению приложен файл. Размер - 8Kb
3 дек 15, 15:21    [18508897]     Ответить | Цитировать Сообщить модератору
 Re: Вычисления в таблице  [new]
Rusich2012
Member

Откуда:
Сообщений: 162
iap, Почти, я так пробовал. Не всегда совпадает, к сожалению
3 дек 15, 15:23    [18508921]     Ответить | Цитировать Сообщить модератору
 Re: Вычисления в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47052
Rusich2012
iap, Почти, я так пробовал. Не всегда совпадает, к сожалению
Я не могу генерировать ваши данные, которые вы не показывали.
Я только использовал то, что вы написали в первом сообщении.
Не пойму, как в такой ситуации вы на что-то расчитываете?

Сначала поймите сами себя. Без всяких там таблиц...
3 дек 15, 15:27    [18508956]     Ответить | Цитировать Сообщить модератору
 Re: Вычисления в таблице  [new]
Rusich2012
Member

Откуда:
Сообщений: 162
iap, что за наезд?
3 дек 15, 16:14    [18509323]     Ответить | Цитировать Сообщить модератору
 Re: Вычисления в таблице  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8350
Rusich2012
Как можно такое реализовать?

Подготовьте таблицу мета-описаний и выполняйте запрос с ее участием, у Вас алгоритм преобразований четко описан и его можно (и нужно) табулировать.
3 дек 15, 16:26    [18509385]     Ответить | Цитировать Сообщить модератору
 Re: Вычисления в таблице  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8350
Лично я стою на позиции, что математика на сервере не должна вносить изменения данных, ее задача - выполнять операции над данными. Т.е. задачи вида если А, то вернуть Б должны решаться самими данными, а не мат. операциями.
3 дек 15, 16:28    [18509408]     Ответить | Цитировать Сообщить модератору
 Re: Вычисления в таблице  [new]
Rusich2012
Member

Откуда:
Сообщений: 162
Владислав Колосов,

я сам расписал, и в итоге сам додумал! :) Всем спасибо.
3 дек 15, 16:34    [18509449]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить