Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » SQL запрос

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Открыть новую тему     Написать ответ в эту тему

landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fsp050, можно прибегнуть к динамическому SQL и формировать текст запроса другим запросом, сохранив наборы параметров в табличку.

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 19:53 22-12-2014
Fsp050

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
landy
а как, можете подсказать?

Всего записей: 361 | Зарегистр. 02-04-2011 | Отправлено: 12:59 23-12-2014
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приблизительно так:
 
1. Создаем таблицу TB_PARAM с параметрами (для начала можно хранить их прямо строкой с перечислением.
 
2. Дальше формируем текст запроса:
 SELECT 'select x1,x2,x3,x4 from dbo a where  [accepted_date]>''ххх''  
  and  условие такое то  
  and х1 in (' + TB_PARAM.VALUE + ')'  
WHERE ID = 1;
 
либо можно использовать процедурный подход:
 
DECLARE @sqlCommand varchar(1000)
SET @sqlCommand = 'SELECT x1,x2,x3,x4 from dbo a where  [accepted_date]>''ххх'' and  условие такое то and х1 in (' + @VALUE + ')';
 
3. Выполняем полученный оператор через EXEC (@sqlCommand)
 
Более другие примеры.

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 21:18 23-12-2014
Futurism

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как правильно написать запрос
case when x1=0 или меньше нуля и х2=243 назвать группа 1
case when x1=1 до 241 и х2=242 назвать группа 2
case when x1=0 или 242 и х2=241 назвать группа 3
case when x1=1 до 241 и х2=243 назвать группа 4
 

Всего записей: 1200 | Зарегистр. 04-02-2011 | Отправлено: 17:58 30-12-2014
vikkiv



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Futurism
Код:
declare @x1 smallint=0,@x2 tinyint=241
select case when @x1<=0 and @x2=243 then'g1'
when @x1 between 1 and 241 and @x2=242 then'g2'
when(@x1=0 or @x1=242)and @x2=241 then'g3'
when @x1 between 1 and 241 and @x2=243 then'g4'
else'g0'end result

Всего записей: 747 | Зарегистр. 10-11-2005 | Отправлено: 22:14 30-12-2014 | Исправлено: vikkiv, 22:21 30-12-2014
Futurism

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vikkiv

Всего записей: 1200 | Зарегистр. 04-02-2011 | Отправлено: 15:11 31-12-2014
rrromano



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В Оракле можно через decode )

Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 16:57 01-01-2015
Fsp050

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А как подсчитать проценты?
например
селект  
х1
х2
х3
фром дбо  
подсчитать сколько процентов в переменной х1 встречается число 20мм

Всего записей: 361 | Зарегистр. 02-04-2011 | Отправлено: 19:12 12-01-2015 | Исправлено: Fsp050, 19:29 12-01-2015
exteris

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
В FB можно так:

Код:
select cast(sum(case x1 when 20 then 1 else 0 end) as float)/count(x1)
from t

Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 09:08 13-01-2015
Fsp050

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Благодарю Вас. А такой вопрос.
вот составленный запрос с пивотами

Всего записей: 361 | Зарегистр. 02-04-2011 | Отправлено: 22:32 13-01-2015 | Исправлено: Fsp050, 18:42 22-01-2015
Futurism

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите, как быть
у меня есть столбец 1,2,3....  
групп   цена    категория   тотал  
х         20            6              20
у         30            5              30
...
как мне добавить 5 столбец тотал-точно, где будут категории, 1,2,3,4,5,6 , но не -1
case when а вот как дальше не могу понять

Всего записей: 1200 | Зарегистр. 04-02-2011 | Отправлено: 18:14 20-01-2015
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Futurism, вот примеры использования CASE

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 19:33 20-01-2015
Fanat Andrew



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
БД FireBird 2.6.0.67
Версия gds32.dll:
        2.5.1.26351
 
 
Есть таблицы:  
CLIENTS поля ID, BONUS_BALANCE
ORDERS поля ID, CLIENTID, TARIF_ID
CLIENT_BONUS_OPER поля ID, CLIENTID, ORDERID, SUMM
 
Надо CLIENTS.BONUS_BALANCE уменьшить последовательно на величину CLIENT_BONUS_OPER.SUMM у тех CLIENTS.ID у которых ORDERS.TARIF_ID равен определенному значению.
CLIENTS.ID, ORDERS.CLIENTID, CLIENT_BONUS_OPER.CLIENTID равны
ORDERS.ID, CLIENT_BONUS_OPER.ORDERID равны
 
После уменьшения необходимо удалить строки из CLIENT_BONUS_OPER которые принимались к вычету
 
Вот так я вывел список операций на основании тарифа
 

Код:
 
select client_bonus_oper.orderid, client_bonus_oper.clientid, client_bonus_oper.summ from client_bonus_oper where orderid  in
(select ORDERS.id
             from ORDERS
             where ORDERS.TARIF_ID like '39')
 

 
ответ

Код:
 
ORDERID    CLIENTID    SUMM
392054    25824    10000
 

а как дальше быть?
надо по ORDERID  уменьшить BONUS_BALANCE на величину SUMM
а потом эту запись убрать

Всего записей: 80 | Зарегистр. 14-03-2006 | Отправлено: 12:04 22-01-2015 | Исправлено: Fanat Andrew, 15:15 22-01-2015
exteris

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как-то так:

Код:
select client_bonus_oper.orderid, client_bonus_oper.clientid, client_bonus_oper.summ-clients.bonus_balance
from client_bonus_oper  
join orders on client_bonus_oper.orderid=orders.id and orders.tarif_id=39
left join clients on clients.id=client_bonus_oper.clientid
 


Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 08:30 23-01-2015
Fsp050

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите пожалуйста, вот есть такая таблица
http://rghost.ru/8cgTDH2wK
ну в sql своя ессно.
как работать с двоящимися значением
т.е. если в одинаковом лоад_ид, есть pair которые повторяются, тут 20 и 20 и одна пара имеет ориент hor , а другая vertical и hor имеет минимальное расстояние тут он 1, то Х, иначе У end as//

Всего записей: 361 | Зарегистр. 02-04-2011 | Отправлено: 18:55 27-01-2015
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fsp050

Цитата:
как работать с двоящимися значением  

Добавить в таблицу суррогатный ключ.

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 14:31 28-01-2015
Fanat Andrew



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
exteris, а что этот запрос делает? что-то не могу понять.

Всего записей: 80 | Зарегистр. 14-03-2006 | Отправлено: 14:51 28-01-2015
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
как работать с двоящимися значением  

например, в oracle для этого есть аналитические функции

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 18:08 28-01-2015
Unnicked

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пожалуйста, помогите со следующим запросом.
 
Есть табличка со столбцами DT (DATE), ID (NUMBER) - первичный ключ, VAL (NUMBER).
 
Нужно получить DT, ID, VAL по всем ID, при этом DT у каждого ID должно быть максимальным. Если у каких-то ID DT и VAL не заданы (null), они тоже должны вернуться этим запросом со значениями null.

Всего записей: 1119 | Зарегистр. 19-08-2005 | Отправлено: 13:59 24-02-2015
Mic777

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Пожалуйста, помогите со следующим запросом.  

Типа такого: Подробнее...

Всего записей: 90 | Зарегистр. 15-12-2005 | Отправлено: 15:01 24-02-2015
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » SQL запрос


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru