Форум программистов, компьютерный форум, киберфорум
Наши страницы

Microsoft SQL Server

Войти
Регистрация
Восстановить пароль
 
xxbesoxx
1012 / 528 / 66
Регистрация: 13.02.2009
Сообщений: 3,047
#1

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

16.08.2014, 20:17. Просмотров 384. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вычисление поля и поисковое выражение CASE MS SQL Server (SQL Server):

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

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

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

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

Можно использовать бд созданную в SQL server 2012 на SQL server 2008? - SQL Server
Можно использовать бд созданную в SQL server 2012 на SQL server 2008? если да,то как ее подключить?

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

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

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

Установка SQL Server 2000 на Windows Server 2003 Web Edition - SQL Server
Не могу установить SQL Server 2000 на Windows Server 2003 Web Edition. Если запускаю установку из авторана, то просто закрывается авторан и...

Установка MS SQL Server Desktop Engine на Windows Server 2008 - SQL Server
MS sql server desktop engine, при установке на windows server 2008 пишет &quot;a strong sa password is required for security reasons. please...

Настройка передачи данных из SQL Server 2005 в Sharepoint Server 2010 Foundation - SQL Server
Доброго времени суток. Хочу реализовать одну схему по запросу данных из информационной системы (ИС), работающей с СУРБД SQL Server 2005,...


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

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

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