powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Дублирование кода исключить
7 сообщений из 7, страница 1 из 1
Дублирование кода исключить
    #40084669
minva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL Server 2008
Есть возможность переписать этот код без дублирования и дополнительного нагромождения? Спасибо
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select 
case 
when 
    case when Field1-Field2 > 0 then Field1-Field2-Field3
	     when Field1-Field2 < 0 then Field1-Field2
    else 0
end < 0
then 0
else
  case when Field1-Field2 > 0 then Field1-Field2-Field3
	   when Field1-Field2 < 0 then Field1-Field2
  else 0
end
from table1
...
Рейтинг: 0 / 0
Дублирование кода исключить
    #40084672
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select 
 case when a.x < 0 then 0 else a.x end
from table1 t cross apply
(
 select
  case
   when t.Field1-t.Field2 > 0 then t.Field1-t.Field2-t.Field3
   when t.Field1-t.Field2 < 0 then t.Field1-t.Field2
   else 0
  end
) a(x)
...
Рейтинг: 0 / 0
Дублирование кода исключить
    #40084691
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select 
 case when a.x < 0 then 0 else a.x end
from table1 t cross apply
(
 select
  case
   when t.Field1-t.Field2 > 0 then t.Field1-t.Field2-t.Field3
   when t.Field1-t.Field2 < 0 then t.Field1-t.Field2
   else 0
  end
) a(x)



Если поднапрячЬся
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select 
 case when a.x < 0 then 0 else a.x end
from table1 t cross apply
(
 select
  case
   when t.Field1-t.Field2 > 0 then t.Field1-t.Field2-t.Field3
   else  0
  end
) a(x)
...
Рейтинг: 0 / 0
Дублирование кода исключить
    #40084692
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ведь можно еще поднапрячЬся...
...
Рейтинг: 0 / 0
Дублирование кода исключить
    #40084697
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
select 
 case when a.x < 0 then 0 else a.x end
from table1 t cross apply
(
 select
  t.Field1 - t.Field2 - case when t.Field1 > t.Field2 then t.Field3 else 0 end
) a(x)
...
Рейтинг: 0 / 0
Дублирование кода исключить
    #40084746
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
извиняюсь, а не проще ли будет
Код: sql
1.
2.
3.
4.
select case when a.x > 0 then a.x else 0 end
from (
      select  Field1-Field2-Field3 as x  from table1 
) a (x)
...
Рейтинг: 0 / 0
Дублирование кода исключить
    #40084776
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
Код: sql
1.
2.
3.
4.
5.
6.
7.
select 
 case when a.x < 0 then 0 else a.x end
from table1 t cross apply
(
 select
  t.Field1 - t.Field2 - case when t.Field1 > t.Field2 then t.Field3 else 0 end
) a(x)


Согласно последних веяний положено писать так:
Код: sql
1.
2.
3.
4.
select 
 case when a.x < 0 then 0 else a.x end
from table1 t cross apply
(Values (t.Field1 - t.Field2 - case when t.Field1 > t.Field2 then t.Field3 else 0 end)) a(x)


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


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