Допустим, у меня есть таблица со следующими даннымиSQL - Динамически генерируемые выберитеПрисоединениедля заявление на основе некоторого условия
клиента таблица:
Name amount date_created invoice_number
--------------------------------------------------
John 50 11April2012 12
Bob 150 15April2012 32
David 506 10May2012 52
Paul 80 12Aug2012 12
Mark 10 11Jan2012 52
Сводная таблица:
Name amount
---------------------
Sally 250
Darren-32 150
I хотел бы выбрать все строки, где date_created находится между start_date и end_date текущего_квартала. Если date_created находится в текущем квартале, я хотел бы добавить имя invoice_number к имени, прежде чем делать инструкцию insert (см. Пример в сводной таблице выше).
INSERT summary(name, amount)
SELECT name|| '-' || invoice_number, date_created, invoice_number
From Customer;
Как я могу изменить выше, чтобы использовать любую функцию «Decode» или функцию «Case» (или любой другой «IF оператор» тип функции), чтобы проверить значение date_created и добавить INVOICE_NUMBER если date_created находится в текущем квартале.
Очевидно, что мне нужно будет знать даты начала и окончания текущего квартала и вам нужно будет их хранить где-то перед выполнением сравнения. Это вообще возможно с чистым SQL? PL/SQL не является вариантом.
Предположим, что мы находимся в 1 квартале (апрель - июнь) конечный результат должен быть:
Name amount
---------------------
Sally 250
Darren-32 150
John-12 50
Bob-32 150
David-52 506
Paul 80
Mark 10
Я читаю таблицу клиентов из базы данных Oracle 10G и заполнение резюме в «Резюме» таблицу, которая находится в базе данных SQL-сервера. Тот факт, что я вставляю в базу данных SQL Server, не имеет большого значения. Я читаю данные из базы данных Oracle, поэтому синтаксис должен быть совместим с Oracle.
Извините, что это синтаксис SQL, но не сложно преобразовать эти функции в Oracle :) Вы получаете идею. – Mangist