powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выбор нескольких полей по одному условию (case, iif..)
2 сообщений из 2, страница 1 из 1
Выбор нескольких полей по одному условию (case, iif..)
    #39955392
Кабысдох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Столкнулся с такой задачей.
К примеру, есть таблица неких числовых значений и текстовых полей.
(TabR)
ID Поле1 Поле2 Поле3 Поле4 Поле5 Поле6 Поле7...1 1000 200 200 A B 02 1000 200 1000 C D 153 200 75 25 E F 20
Делаем выборку некой арифметическо-логической операции из этой таблицы.
Код: sql
1.
 SELECT ID, abs(iif(Поле1 - Поле2 - Поле3 > 0, 0, Поле1 - Поле2 - Поле3)) from TabR 



И в зависимости от этого результата операции выбираем последущие поля. Пусть они если результатом будет 0, будут просто пустыми, а если > 0 - то "сдвоенные" (для чисел ссуммированными получатся ;))

Код: sql
1.
2.
3.
4.
5.
6.
 SELECT ID, 
         abs(iif(Поле1 - Поле2 - Поле3 > 0, 0, Поле1 - Поле2 - Поле3)) as Rezult,
         case when abs(iif(Поле1 - Поле2 - Поле3 > 0, 0, Поле1 - Поле2 - Поле3)) > 0 then Поле4+Поле4 else '' end as Поле4, 
         case when abs(iif(Поле1 - Поле2 - Поле3 > 0, 0, Поле1 - Поле2 - Поле3)) > 0 then Поле5+Поле5 else '' end as Поле5,
         case when abs(iif(Поле1 - Поле2 - Поле3 > 0, 0, Поле1 - Поле2 - Поле3)) > 0 then Поле6+Поле6 else '' end as Поле6
from TabR


Вопрос. Можно ли в T-SQL указать условие ОДИН раз для некоторого набора строк, а не каждый раз указывать его для каждого поля?
Ну типа
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 SELECT ID, 
         abs(iif(Поле1 - Поле2 - Поле3 > 0, 0, Поле1 - Поле2 - Поле3)) as Rezult,
         case when abs(iif(Поле1 - Поле2 - Поле3 > 0, 0, Поле1 - Поле2 - Поле3)) > 0 then 
         Поле4+Поле4 as Поле4, 
         Поле5+Поле5 as Поле5, 
         Поле6+Поле6 as Поле6
         else 
         '' as Поле4,
         '' as Поле5, 
         '' as Поле6,
         end 
from TabR


Можно конечно вынести первое условие в подзапрос и сделать выборку с inner join на него, но все равно придется делать проверку для каждого поля...
Заранее спасибо!
...
Рейтинг: 0 / 0
Выбор нескольких полей по одному условию (case, iif..)
    #39955398
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кабысдох,

CTE использовать.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выбор нескольких полей по одному условию (case, iif..)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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