Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
xxbesoxx
Эксперт Pascal/Delphi
1019 / 539 / 110
Регистрация: 13.02.2009
Сообщений: 3,107
1

Вычисление поля и поисковое выражение CASE MS SQL Server

16.08.2014, 20:17. Просмотров 407. Ответов 0
Метки нет (Все метки)

Здравствуйте ребята. Есть такой таблица
T-SQL
1
2
3
4
5
6
7
8
create Table Tab2
(
    id int identity(1,1) primary key,
    dat_vidan datetime default getdate(), -- Дата оформления
    naimenovanie nvarchar(40) not null, -- Наименование
    fio nvarchar(40) not null,
    vidan_deng money -- выданный деньги
);
Добавляю запись
T-SQL
1
2
3
4
5
6
7
8
9
10
11
insert into Tab2(naimenovanie, fio, vidan_deng)
values(N'Телевизор',N'Денис дубинин',200),
           (N'Ноутбук',N'Денис дубинин',250),
           (N'Телефон',N'Денис дубинин',800),
           (N'Что то',N'Денис дубинин',750),
           (N'Что то',N'Денис дубинин',650),
           (N'Что то', N'Иване иванов',620),
           (N'Что то', N'Васия пупкин',40),
           (N'Что то', N'Аня микифоров',50),
           (N'Что то', N'Оксана михаленко ',85)
    select * from Tab2
На это запросе несколько условия
1. Почитать кол-во день .
2. если vidan_deng <=50 то сразу as [деньги+%] добавить 5 руб. и каждое 10-день добавить процент 5руб.
3. Если клиент был >=5 раз то ему второе процент добавилось as [деньги+%] в 14-день
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
select id, dat_vidan, naimenovanie, fio, vidan_deng,
 
DATEDIFF(DAY,dat_vidan,GETDATE()) as [Кол-во ден] , -- 1. Почитать кол-во день 
case 
when vidan_deng <=50 then  -- если  vidan_deng <=50   -- 2. если  vidan_deng <=50  то сразу  [B]as [деньги+%][/B] добавить 5 руб. и каждое 10-день добавить процент 5руб.
  (vidan_deng +5)+ 5 *(DATEDIFF(DAY,dat_vidan,GETDATE())/10)
  -------------------------------------------------------------------------------
   WHEN (SELECT count(T2.fio) from tab2 T2 WHERE T2.fio=T1.Fio)>=5  then --3. Если клиент был >=5 раз то ему второе процент добавилось [B]as [деньги+%][/B] в [B]14-день[/B]  
  (vidan_deng+ vidan_deng/100*10) +(vidan_deng /100*10) *(DATEDIFF(DAY,dat_vidan,GETDATE())/14)
  ---------------------------------------------------------------------
else -- Противном случи 10% от виданный сумма 
   (vidan_deng+ vidan_deng/100*10) +(vidan_deng /100*10) *(DATEDIFF(DAY,dat_vidan,GETDATE())/10)  
end  as [деньги+%]
  ----------------------------------------------------------------------------------
from Tab2  T1
Я хочу добавить еще 4 условия ...
пользователь который был 5 или больше раз , после второго процента который добавляется 14 - день ! 3-ого %, 4-ого%, 5-ого% и так далее, ЕМУ ТОЖЕ 10-ого день добавилось как и других клиентов .
------------------------------------------------------------------------------------
Я думал что это буду определить так ! если as [Кол-во ден] больше 14 того дня ! то через 10-день продолжал процент добавить .
T-SQL
1
2
3
    ------------ Для 3-ого ПРОЦЕНТ  ---------------------------------------- 
 when (select DATEDIFF(DAY,dat_vidan,GETDATE()) ) > 14 then 
   (vidan_deng+ vidan_deng/100*10) +(vidan_deng /100*10) *(DATEDIFF(DAY,dat_vidan,GETDATE())/10)
не правильно читает . Вот целом как выглядит это код
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
select id, dat_vidan, naimenovanie, fio, vidan_deng, 
DATEDIFF(DAY,dat_vidan,GETDATE()) as [Кол-во ден] ,
case 
----------------------------------   Если деньги менше или равно 50 тогда процент будеть 5 лари         ----------------------------- 
when vidan_deng <=50 then   
      (vidan_deng +5)+ 5 *(DATEDIFF(DAY,dat_vidan,GETDATE())/10)
     ---------------------------------------Если клиенть биль 5 или больше раз ! Тогда  второе поценть через  -------------------- 
 WHEN (SELECT count(T2.fio) from tab2 T2 WHERE T2.fio=T1.Fio)>=5   then --
      (vidan_deng+ vidan_deng/100*10) +(vidan_deng /100*10) *(DATEDIFF(DAY,dat_vidan,GETDATE())/14)
    ------------ Для 3-ого ПРОЦЕНТ  что процент зачислял через 10 ден------------------------------------------------- 
 when (select DATEDIFF(DAY,dat_vidan,GETDATE()) ) > 14 then 
   (vidan_deng+ vidan_deng/100*10) +(vidan_deng /100*10) *(DATEDIFF(DAY,dat_vidan,GETDATE())/10)   
  ---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
else -- Противном случи 10% от виданный сумма 
   (vidan_deng+ vidan_deng/100*10) +(vidan_deng /100*10) *(DATEDIFF(DAY,dat_vidan,GETDATE())/10)  
end  as [деньги+%]
from Tab2  T1
Ребята скажите пожалуйста как реализовать ЧТО КЛИЕНТ КОТОРЫЙ БЫЛ 5 ИЛИ БОЛЬШЕ РАЗ ! что у них после добавление второго процента все остальные добавилось 10-ого дня как всех остальных ???

Добавлено через 3 часа 58 минут
Тема можно закрыть ! Разобрал
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2014, 20:17
Ответы с готовыми решениями:

Можно ли использовать рег. выражение в SQL Server 2000?
Есть необходимость реализовать работу с рег. выражениями в SQL Server (in store...

Создание Вычисляемого поля SQL SERVER 12
есть проблема: я хочу сделать вычисляемое поле, но когда я выбираю (как мне...

Как настроить MS SQL Server, чтобы через Access, можно было редактировать таблицы MS SQL Server?
ВОПРОС: Как настроить MS SQL Server, чтобы через Access, можно было...

SQL Server 2012 Management Studio Express не появляется служба SQL Server
Здравствуйте. Установил SQL Server Management Studio Express 2012 , необходимый...

Можно использовать бд созданную в SQL server 2012 на SQL server 2008?
Можно использовать бд созданную в SQL server 2012 на SQL server 2008? если...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2014, 20:17

SQL Server - Не могу установить SQL Server
Здравствуйте, не получается установить SQL Server 2012 Ошибка:

Как подключиться к MS SQL SERVER 2012 с MS Server management на другом компьютере?
Уже чего только не пробовал.. 1433 порт закрыт, с моего пк не хочет подключатся...

Установка SQL Server 2000 на Windows Server 2003 Web Edition
Не могу установить SQL Server 2000 на Windows Server 2003 Web Edition. Если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru