Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
setmage
0 / 0 / 1
Регистрация: 28.11.2016
Сообщений: 6
1

SQL-запрос в SQL server management studio 2008 (if else)

17.12.2016, 18:10. Просмотров 811. Ответов 5
Метки нет (Все метки)

Здравствуйте! Нужна помощь в правке условия, уже как более 8 часов не могу правильно составить условие... +1 к карме обеспечен.
Вычислить налоги на выручку. Налог считать так: если выручка от продажи
товара больше 10000, то налог равен 20% от выручки, иначе – 13% от выручки;


SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
USE [DATA]
GO
/****** Object:  StoredProcedure [dbo].[proc5]    Script Date: 12/17/2016 17:58:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[proc5]
AS 
IF(SELECT price*amount FROM Warehouse)>1000 
SELECT title, price, amount, price*amount/20 AS Tax FROM Warehouse
ELSE
SELECT title, price, amount, price*amount/13 AS Tax FROM Warehouse
После выполнения данного запроса выдает:

Сообщение 512, уровень 16, состояние 1, процедура proc5, строка 3
Вложенный запрос вернул больше одного значения. Это запрещено, когда вложенный запрос следует после =, !=, <, <=, >, >= или используется в качестве выражения.

(строк обработано: 8)

Как я понимаю данный "if" надо обернуть в цикл, но дело в том что я не могу понять как это сделать... Нигде не нашел примера на решение...
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2016, 18:10
Ответы с готовыми решениями:

SQL запрос на sql server management studio
Доброго времени суток. Имеется две таблицы покупателей man(name,NumberMan) и...

SQL Server Management Studio 2008. Доступ к таблицам на удаленном сервере
Работаю на Висте с SQL Server 2008. Management Studio 2008. Установил...

Просмотр содержимого таблиц в Microsoft SQL Server 2008 Management Studio Express
Кто-нибудь может подсказать как настроить(или переустановить) SQL Server 2008...

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

Как установить SQL Management Studio 2008 R2
Хочу установитьMicrosoft SQL Server 2008 R2. Скачал установщик:...

5
YuryK
1030 / 847 / 337
Регистрация: 08.12.2016
Сообщений: 3,283
17.12.2016, 18:33 2
у тебя в таблице Warehouse всего одна запись?
а если много, то налог за проданное в прошлом году ты заново платишь при каждом выполнении запроса? Так это не государство душит предпринимателей налогами, а ты
1
setmage
0 / 0 / 1
Регистрация: 28.11.2016
Сообщений: 6
17.12.2016, 18:45  [ТС] 3
Я намек понял, но не могу понять реализацию... не смог найти пример в сети что бы через цикл запустить все это...
0
YuryK
1030 / 847 / 337
Регистрация: 08.12.2016
Сообщений: 3,283
17.12.2016, 18:55 4
Лучший ответ Сообщение было отмечено setmage как решение

Решение

это не цикл а агрегирующий запрос

T-SQL
1
2
3
4
5
SELECT 
  SUM(price*amount) BbIPY4KA,
  SUM(price*amount) * case when  SUM(price*amount) > 10000 then 0.2 ELSE 0.13 end Tax
FROM Warehouse
WHERE ... //[здесь надо как-то ограничивать количество суммируемых записей, чтобы налоги не считать дважды/трижды, например за квартал, или с начала года и т.п.]
1
setmage
0 / 0 / 1
Регистрация: 28.11.2016
Сообщений: 6
17.12.2016, 19:07  [ТС] 5
Решение шикарно, и оно очень много для меня открыло нового, но оно подсчитывает общую сумму всех товаров и в итоге общий налог со всех товаров, а надо отдельный налог на отдельный товар.
0
Миниатюры
SQL-запрос в SQL server management studio 2008 (if else)  
setmage
0 / 0 / 1
Регистрация: 28.11.2016
Сообщений: 6
17.12.2016, 19:21  [ТС] 6
Решил вопрос следующим запросом:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
USE [DATA]
GO
/****** Object:  StoredProcedure [dbo].[proc5]    Script Date: 12/17/2016 17:58:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[proc5]
AS 
SELECT title, price, amount, CASE 
    WHEN ( price * amount ) > 1000 
        THEN ( price * amount * 20 / 100 ) 
        ELSE ( price * amount * 13 / 100 ) 
    END AS tax 
FROM Warehouse;
Огромное спасибо всем кто отвечал! +1 в карму
0
17.12.2016, 19:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2016, 19:21

Microsoft SQL Server Management studio 17 не подключается к mysql server 5.7
Проще говоря studio его вообще не видит, пишу чтобы подключился (имя указываю...

Не работает MS SQL Server Management Studio
Здравствуйте! Я только приступил к изучению SQL, поэтому не особо понимаю в...

Не подключается к MS SQL Server Management Studio 17
Поставила недавно свежую MS SQL Server Management Studio 17. При попытке...


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

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

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