在 Prompt 中输入的 Date Range 或 Columns 值需要用作 Spotfire IL 中的变量 modified SQL

Date Range or Columns values entered in Prompt need to be used as variables in Spotfire IL modified SQL

我需要使用日期 range/any 列的提示输入作为信息 Link 的修改 SQl 功能中的变量。我有一些使用多个条件的复杂查询,我无法将它们保留在视图中,并希望使用此变量在修改后的 SQL 中添加这些条件。

这是一个示例 SQL,我需要使用 variable/parameter 而不是给定的日期

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')) )) )

我需要将上面的where条件添加到Information中link修改SQL参数为这样

WHERE xxxxx.yyyyy = xxxxx.yyyyy


       AND ( ((    xxxxx.yyyy >= @parameter1
                 AND xxxxx.yyyy <  @parameter2
                 AND xxxxx.zzzzz >=    @parameter1
                 AND xxxxx.zzzzz < @parameter2

如果需要进一步说明,请告诉我。

这只适用于一种情况。即 >= 或 <= xxxxx.yyyy 列中的所有日期。因此,如果您必须 使用视图,那么您需要在信息设计器中使用提示。方法如下:

  1. 在信息​​设计器中打开您的信息Link
  2. 别管你的 SQL。将日期范围设置为您需要的最大范围
  3. 提示 部分下,添加 提示 xxxxx.yyyy专栏
  4. 提示类型设置为范围并选中强制

现在,将信息 Link 添加到您的分析中...

  1. 当提示 window 打开时,select 底部的 Use On-demand 按钮。 Select 确定/完成
  2. 在工具栏上转到 编辑 > 数据 Table 属性 和 select 您的数据 table
  3. Select 数据类型下的设置按钮:常规 ]选项卡
  4. 突出显示您的 xxxxx.yyyy 列并单击 定义输入 按钮
  5. Select 值 (fixed/properties/expression) 来自 selected 参数 [=] 输入的下拉列表58=]
  6. Select 属性 单选按钮并单击 Select 按钮
  7. 单击 新建 并创建一个 属性 类型为 DATE 的控件,您将在文本区域中使用该控件

同样,这不是理想的方式。如果您真的想在多个条件下使用多个参数,我们需要将您的视图转换为过程或 table 值函数。不难。


编辑

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 中输入它来测试执行情况 window。

EXEC dbo.myProcedure '4/1/2016','7/1/2016' --or what ever dates you want to pass in.