SQL-запрос в C# для подсчета произведения

Рейтинг: 1Ответов: 1Опубликовано: 07.12.2014

Добрый день!

Столкнулась с такой проблемой: необходимо, чтобы по значениям колонок в dataGridView некоторым переменным присваивались значения, результат перемножения которых был бы в одной из колонок таблицы.

Код пишу так:

                OleDbCommand command1 = new OleDbCommand(string.Format("SELECT [Вид собственности] FROM [Налог]", "IF [Вид собственности] = '1' ", KP = 0.3, stavka = 29), connection);
                OleDbCommand command2 = new OleDbCommand(string.Format("SELECT [Тип ЗУ] FROM [Налог]", "IF [Тип ЗУ] = 'С'", Kad = 1800000, "ELSIF [Тип ЗУ] = 'Д'", Kad = 3500000, "ELSIF [Тип ЗУ] = 'Е'", Kad = 600000, "ELSE", Kad = 1500000), connection);
                OleDbCommand command7 = new OleDbCommand(string.Format("UPDATE [Налог] SET [Размер налога]='" + Kad * KP * stavka + "'"), connection);

Ответы

▲ 1Принят

Если я правильно понял, вам нужна одна простая команда:

update Налог
set [Размер налога] = case [Тип ЗУ] when 'С' then 1800000 when 'Д' then 3500000 when 'Е' then 600000 else 1500000 end * KP * stavka
from Налог
cross apply (select KP = 0.3, stavka = 29 where [Вид собственности] = '1') wtf

Или даже такая:

update Налог
set [Размер налога] = case [Тип ЗУ] when 'С' then 1800000 when 'Д' then 3500000 when 'Е' then 600000 else 1500000 end * 0.3 * 29
where [Вид собственности] = '1'

Заключите ее в свою обертку, и все в порядке.