Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
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] Ответить | Цитировать Сообщить модератору |
Кот Матроскин 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] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Почему вдруг для одного и того же "RowPos если 1" Res то 1, то 3, то 5 становится ? А для "RowPos если 2" Res то 2, то 4, то 6 становится ? |
||
3 дек 15, 14:39 [18508621] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
Res=RowPos+2*(DtPos-1)Правильно? |
3 дек 15, 15:01 [18508767] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Rusich2012 Member Откуда: Сообщений: 162 |
iap, Почти, я так пробовал. Не всегда совпадает, к сожалению |
3 дек 15, 15:23 [18508921] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
Я только использовал то, что вы написали в первом сообщении. Не пойму, как в такой ситуации вы на что-то расчитываете? Сначала поймите сами себя. Без всяких там таблиц... |
||
3 дек 15, 15:27 [18508956] Ответить | Цитировать Сообщить модератору |
Rusich2012 Member Откуда: Сообщений: 162 |
iap, что за наезд? |
3 дек 15, 16:14 [18509323] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
Подготовьте таблицу мета-описаний и выполняйте запрос с ее участием, у Вас алгоритм преобразований четко описан и его можно (и нужно) табулировать. |
||
3 дек 15, 16:26 [18509385] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
Лично я стою на позиции, что математика на сервере не должна вносить изменения данных, ее задача - выполнять операции над данными. Т.е. задачи вида если А, то вернуть Б должны решаться самими данными, а не мат. операциями. |
3 дек 15, 16:28 [18509408] Ответить | Цитировать Сообщить модератору |
Rusich2012 Member Откуда: Сообщений: 162 |
Владислав Колосов, я сам расписал, и в итоге сам додумал! :) Всем спасибо. |
3 дек 15, 16:34 [18509449] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |