Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Кросс запросы

6.2K
17 июня 2005 года
sklutov
20 / / 24.12.2004
Прошу помощи!
Раньше писал на VB. Там с кросс запросами все нормально.
Теперь необходимо из таблицы вида:

Поставщик Сумма %НДС СуммаНДС
Иванов_____250____ 10_____25
Петров_____350____ 20_____70
Сидоров___ 400_____0______0

получить данные таком виде:

Поставщик__Сумма__10%__20%__БезНДС
Иванов______250____25___0_____ 0
Петров______ 350_____0__70_____0
Сидоров_____400_____0___0____400

Подскажите как это сделать в CB6, база - IB6
4.2K
17 июня 2005 года
Крыс
98 / / 06.05.2005
как вариант можно сделать 3 запроса с использованием where, но может быть это можно сделать лучше
10
17 июня 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by sklutov
база - IB6


Я немного знаком только с Firebird, в версии 1.5 они добавили много новых возможностей, чтобы лучше соответствовать стандартам SQL. Про возможности только читал, но вплотную с ними работать не приходилось.

В Oracle это будет выглядеть так:

 
Код:
select
  supplier,
  sum(payment) payment
  sum(case when vat_rate = 10 then payment * 0.1 else 0 end) vat10,
  sum(case when vat_rate = 20 then payment * 0.2 else 0 end) vat20,
  sum(case when vat_rate = 0 then payment else 0 end) vat0
from
  supplies
group by
  supplier

Посмотри по мануалу, можно ли подобное реализовать в синтаксисе IB. Если нет, есть еще второй способ, основанный на inline view и full outer join. Он не такой производительный, как предложенный выше. Но зато опять-таки все решается одним запросом.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог