Значения диапазона дат или столбцов, введенные в приглашении, необходимо использовать в качестве переменных в модифицированном SQL Spotfire IL.
Мне нужно использовать подсказку ввода диапазона дат / любого столбца, который будет использоваться в качестве переменной в модифицированной функции SQl Информационной ссылки. У меня есть несколько сложных запросов, которые используют несколько условий, и я не смогу держать их в представлении и хочу добавить эти условия в модифицированный SQL, используя эту переменную.
Это пример SQL, где мне нужно использовать переменную / параметр вместо указанных дат
SELECT xxxxx.yyyy
FROM xxxxx, xxxxx, xxxxx, xxxxx
WHERE xxxxx.yyyyy = xxxxx.yyyyy
AND ( (( xxxxx.yyyy >= (TO_DATE ('11/01/2015', 'MM/DD/YYYY'))
AND xxxxx.yyyy < (TO_DATE ('12/1/2015', 'MM/DD/YYYY'))
AND xxxxx.zzzzz >= (TO_DATE ('11/01/2015', 'MM/DD/YYYY'))
AND xxxxx.zzzzz < (TO_DATE ('12/1/2015', 'MM/DD/YYYY')) ))
OR (( xxxxx.zzzzz >= (TO_DATE ('11/01/2015', 'MM/DD/YYYY'))
AND xxxxx.zzzzz < (TO_DATE ('12/1/2015', 'MM/DD/YYYY'))
AND xxxxx.yyyy = (TO_DATE ('01/01/1753', 'MM/DD/YYYY')) ))
OR (( xxxxx.zzzzz >= (TO_DATE ('11/01/2015', 'MM/DD/YYYY'))
AND xxxxx.zzzzz < (TO_DATE ('12/1/2015', 'MM/DD/YYYY'))
AND xxxxx.yyyy > (TO_DATE ('10/15/2015', 'MM/DD/YYYY'))
AND xxxxx.yyyy < (TO_DATE ('12/1/2015', 'MM/DD/YYYY')) )) )
Мне нужно выше, где условия для добавления в информационную ссылку модифицированного SQL с параметром, чтобы быть таким
WHERE xxxxx.yyyyy = xxxxx.yyyyy
AND ( (( xxxxx.yyyy >= @parameter1
AND xxxxx.yyyy < @parameter2
AND xxxxx.zzzzz >= @parameter1
AND xxxxx.zzzzz < @parameter2
Дайте мне знать, если необходимы дальнейшие разъяснения.
1 ответ
Это будет работать только для одного условия. То есть>= или <= ко всем датам в столбце xxxxx.yyyy. Так что, если вы ДОЛЖНЫ использовать представление, вам нужно использовать подсказки в информационном конструкторе. Вот как:
- Откройте вашу информационную ссылку в информационном дизайнере
- Оставь свой SQL в покое. Установите диапазон дат на самый большой диапазон, который вам нужен
- В разделе "Подсказки" добавьте подсказку для своего столбца xxxxx.yyyy
- Установите тип подсказки на Range и установите флажок Mandatory
Теперь добавьте информационную ссылку в свой анализ...
- Когда откроется окно с подсказкой, нажмите кнопку " Использовать по требованию" внизу. Выберите ОК / Готово
- На панели инструментов перейдите в " Правка"> "Свойства таблицы данных" и выберите свою таблицу данных.
- Нажмите кнопку " Настройки" в разделе " Тип данных": на вкладке " Общие ".
- Выделите столбец xxxxx.yyyy и нажмите кнопку " Определить ввод"
- Выберите значения (фиксированные / свойства / выражения) из выпадающего меню для ввода для выбранного параметра
- Выберите переключатель " Свойства " и нажмите кнопку " Выбрать"
- Нажмите New и создайте элемент управления свойствами типа DATE, который вы будете использовать в текстовой области.
Опять же, это не идеальный способ. Если вы TRULY хотите использовать несколько параметров в нескольких условиях, нам нужно преобразовать ваше представление в процедуру или табличную функцию. это не трудно.
РЕДАКТИРОВАТЬ
CREATE PROCEDURE dbo.myProcedure(@parameter1 datetime, @parameter2 datetime)
AS
SELECT xxxxx.yyyy
FROM xxxxx, xxxxx, xxxxx, xxxxx
WHERE xxxxx.yyyyy = xxxxx.yyyyy
AND xxxxx.yyyy >= @parameter1
AND xxxxx.yyyy < @parameter2
AND xxxxx.zzzzz >= @parameter1
AND xxxxx.zzzzz < @parameter2
Затем вы можете проверить выполнение, введя это в новом окне SSMS.
EXEC dbo.myProcedure '4/1/2016','7/1/2016' --or what ever dates you want to pass in.