Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Можно ли создать несколько строк при помощи запроса SELECT Sum ?

Можно ли создать несколько строк при помощи запроса SELECT ?
У меня есть запрос, который считает суммы поступлений за определенный период, расходы и прочие вычисления на основе этих цифр. Я примерно понимаю как создать результатирующие поля и присваивать им заголовки - но все это получается в одну строчку. Хотелось бы сделать это по месяцам и в одной табличке, чтобы набор вычисленных значений по каждому месяцу шел на новой строке. Сохранять это не надо. Запускаю из вкладки Запросы.

Пример того что есть:
SELECT Sum(IIf((Деньги.Операция)="Получил" Or (Деньги.Операция)="ПолучилИП",Деньги.Сумма,0)) AS ДоходВсегоБезЗаймов, Sum(IIf((Деньги.Операция)="Взял взаймы" and (Деньги.Контрагент)<>"А",Деньги.Сумма,0)) AS ВсегоЗаймовБезА, ДоходВсегоБезЗаймов+ВсегоЗаймовБезАлферова AS ДоходОбщий,
FROM Деньги
WHERE (((([Деньги].[Дата]))>#4/30/2015# And (([Деньги].[Дата]))<#6/1/2015#))
Ответ: Я вставил Вашу строку в конец своего запроса и оно сработало - спасибо ! А как бы теперь добавить слева колонку с названиями месяцев ?
Вопрос: C помощью запроса рассчитать количество больных по каждому участковому врачу

Нужно с помощью запроса рассчитать количество больных по каждому участковому врачу по таблице Посещение врача и внести его в поле Кол-во боль-ных в таблицу Участковые врачи.
Обе таблицы в приложенном архиве
Ответ: Выполнить запрос "kow" потом запрос "кол". Обратите внимание на поле "DATE", возможно пригодится.
Вопрос: Как суммировать столбцы из таблицы с помощью запроса?

как суммировать столбцы из таблицы с помощью запроса ?
примерно так ?

мне нужно вывести в отчете сумму столбцов.

Спасибо за ране за ответ.
Ответ: Спасибо )))))))))))
Вопрос: Как понять в какой схеме лежит индекс с помощью запроса?

Как понять в какой схеме лежит индекс с помощью запроса?
Ответ: index_schema,

индексы не лежат в схеме.
Вопрос: Создать любые две таблицы, установить между ними связь, и с помощью запроса показать эту связь

Короче такое задание. Создать любые две таблицы, установить между ними связь и с помощью запроса показать эту связь. Как это сделать? Подскажите плес. Я только начинаю изучать SQL. Заранее спасибо.
Ответ: Почитать про primary key, foreign key, join =)
Вопрос: Реализация задачи с помощью запроса

Добрый день!

Помогите с решением задачи.
У меня есть таблица с 5-ю полями
1) МХ number
2) ТП number
3) ОСТ number
4) НОСТ number
5) ДСГ date

Необходимо провести преобразования
В разрезе МХ-ТП отсортировать по возрастанию ДСГ.
Первому найденному (в каждом разрезе МХ-ТП) присвоить
НОСТ(1) = 0
Остальным применить формулу
НОСТ(n) = ОСТ(n) + max(0;HOCT(n-1))

Количество записей около 200 млн.
Как сделать в цикле я знаю. Но хотелось бы реализовать с помощью запроса
Подскажите, если это возможно сделать.

Заранее всем спасибо!!
Ответ: Бельфя,

в версиях Oracle, поддерживающих рекурсивный WITH - можно
Вопрос: помощь в SQL запросе BETWEEN IF и т.п.

Добрый день!

Прошу помощи в составлении sql запроса

Есть поля
status_report (int)
day_start (datetime)
day_stop (datetime)
5.5.46 - MySQL
Мне надо вывести информацию, которая подходит под следующие условия

status_report = 0
day_start больше или равно текущей дате
day_stop меньше или равно текущей дате

но если status_report=0, а day_start и day_stop уже меньше текущей даты, значения всё равно выводить...

Сейчас мой запрос выглядит так
CODE (SQL):

  1. SELECT * FROM `reestr` WHERE `day_start` BETWEEN '2017-09-19' AND '2017-09-29' AND status_report=0 ORDER BY `day_start` ASC


и в него не попадают записи. если даты уже прошли.

Как правильно построить такой запрос? Предполагаю, что тут необходимо использовать операторы IF и т.п., но пока не дошло как

Вариант
CODE (SQL):

  1. SELECT * FROM `reestr` WHERE status_report=0 AND ((`day_start` BETWEEN '2017-09-19' AND '2017-09-29') OR (`day_stop` BETWEEN '2017-09-19' AND '2017-09-29')) ORDER BY `day_start` ASC


вроде выводит, но как только дата стоп выйдет за битвин, записи со статусом=0 не выводятся

(Отредактировано автором: 19 Сентября, 2017 - 09:14:16)

Ответ:
Если немного схлопнуть перекрывающиеся условия:
CODE (SQL):

  1. status_report = 0 AND (day_start >= CURRENT_DATE OR day_stop <= CURRENT_DATE)


Плюс check(day_start <= day_stop), если бы mysql умел check constraints. А так проверять на приложении или вкорячивать триггеры.


-----
PostgreSQL DBA
Вопрос: Глюк в запросе (BETWEEN)

Добрый день уважаемые гуру.
Сложилась ситуация, никак не могу правильно рассчитать формулу.
Сделал календарь событий, все нормально добавляет в базу, время и т.д., вытаскивает результат.
но вопрос вот в чем, не получается правильно сделать (если клиент выбрал одну и туже дату, которая уже имеется в календаре, чтоб он выводил ошибку), данная схема уже практически реализована, но имеется косяк,
Например, если выбрали дату 11.09.2015 15-00 и 11.09.2015 16-00 и второй выбрал дату 11.09.2015 14-00 и 11.09.2015 15-30 то он выводит ошибку(все правильно), а если выбрали одинаковую дату 11.09.2015 15-00 и 11.09.2015 15-00 то он заносится в базу и ставится рядом(косяк)
вот пример sql запроса
Код SQL
1
2
3
$str_start = DATE("Y-m-d H:i",strtotime("+1 minutes",strtotime($start)));
$str_end = DATE("Y-m-d H:i",strtotime("-1 minutes",strtotime($end)));
$sql_check = 'SELECT * FROM events WHERE room = "' . $room . '" AND (start BETWEEN "' . $str_start . '" AND "' . $str_end . '" OR end BETWEEN "' . $str_start . '" AND "' . $str_end . '")';
Ответ: Ответ уже дан в другом форуме
Вопрос: between глючит

Опытным путем на некоей БД было обнаружено, что некий запрос возвращает разный результат (пруфа дать не могу).
Запрос отчета детерминированный, данные таблиц никто не трогает. Т.е. бред полный.
Опытным путем было обнаружено, что источником ошибок является соотношение between, которое _иногда_ (!) истинно, когда д.б. ложно
у меня это было соотношение
24.02.2106 between 05.10.2015 and 05.10.2015

все аргументы between - колонки таблиц типа DATE без часов-минут-секунд.
Проблему решил через замену between на <= and >=. Но у меня таких запросов много, и страшно подумать, что они могут глючить иногда.

Вопрос к тем, кто сталкивался - почему так происходит? Поиск в ru-гугле ничего не дал.

Если не верите - можете не писать, все равно я Вам не смогу пруф дать.
Ответ:
Anatoly B
Откуда взялось строгое сравнение?
Из предположения, что на практике даты чаще со временем и обоюдокруглость границ настораживает, взялось ... взялся вопрос - не допустил ли автор ошибку "Ты уверен, что логика правильная ?" и предложение отличного от between варианта с однострогим сравнением.
Вопрос: sql: max from between

Привет всем. Есть ли элегантный способ получить одну запись из выражения between?

Пример: select t.date from t where :param1 between t.fromdate and t.todate

Запрос выдает несколько записей, но мне надо взять максимальное значение из всех date. Внешние запросы не предлагать.
Ответ: на правах шутки в продолжение = (select max(...

with t as (select level id, 
                  trunc(sysdate) + mod(level,3) date_, 
                  trunc(sysdate) - mod(level,5) start_date,  
                  trunc(sysdate) + 1 + mod(level,5) end_date 
          from dual connect by level <= 10
          ---- test data)[
select * from t 
where /*trunc(sysdate) + 3*/ :param between t.start_date and t.end_date
      and (t.date_, t.id) in (select max(tt.date_) keep (dense_rank last order by tt.date_), 
                                     max(tt.id) keep (dense_rank last order by tt.date_) 
                              from t tt 
                              where /*trunc(sysdate) + 3*/ :param between tt.start_date and tt.end_date);