Значения диапазона дат или столбцов, введенные в приглашении, необходимо использовать в качестве переменных в модифицированном 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. Так что, если вы ДОЛЖНЫ использовать представление, вам нужно использовать подсказки в информационном конструкторе. Вот как:

  1. Откройте вашу информационную ссылку в информационном дизайнере
  2. Оставь свой SQL в покое. Установите диапазон дат на самый большой диапазон, который вам нужен
  3. В разделе "Подсказки" добавьте подсказку для своего столбца xxxxx.yyyy
  4. Установите тип подсказки на Range и установите флажок Mandatory

Теперь добавьте информационную ссылку в свой анализ...

  1. Когда откроется окно с подсказкой, нажмите кнопку " Использовать по требованию" внизу. Выберите ОК / Готово
  2. На панели инструментов перейдите в " Правка"> "Свойства таблицы данных" и выберите свою таблицу данных.
  3. Нажмите кнопку " Настройки" в разделе " Тип данных": на вкладке " Общие ".
  4. Выделите столбец xxxxx.yyyy и нажмите кнопку " Определить ввод"
  5. Выберите значения (фиксированные / свойства / выражения) из выпадающего меню для ввода для выбранного параметра
  6. Выберите переключатель " Свойства " и нажмите кнопку " Выбрать"
  7. Нажмите 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.
Другие вопросы по тегам