我怎样才能使用&引用;在teradata中,以便每次运行查询时都会提示我输入新数据?

我怎样才能使用&引用;在teradata中,以便每次运行查询时都会提示我输入新数据?,teradata,Teradata,我正在access中使用下面的查询来构建一个数据库。我想用不同的日期范围和不同的“ndc”编号使用此查询。在下面的查询中,我使用了问号,但没有得到结果。我知道我能用吗?在Sql server中,但teradata不接受这种模糊性。我是否可以这样做,而不必指定日期范围和“ndc”编号 select ls.str_nbr, ndc11, wic_nbr, prod_name, pkg_sz, pkg_qty, count(*) as rx_volume, sum(fill_qty_dspn), s

我正在access中使用下面的查询来构建一个数据库。我想用不同的日期范围和不同的“ndc”编号使用此查询。在下面的查询中,我使用了问号,但没有得到结果。我知道我能用吗?在Sql server中,但teradata不接受这种模糊性。我是否可以这样做,而不必指定日期范围和“ndc”编号

 select ls.str_nbr, ndc11, wic_nbr, prod_name, pkg_sz, pkg_qty, count(*) as rx_volume, sum(fill_qty_dspn), sum(fill_gross_profit_dlrs), sum(fill_revenue_dlrs), sum(fill_cost_dlrs)     
    from (select * from prdedwvwh.prescription_fill_sold where fill_sold_dt Between ? And ? ) as pf           
    inner join  
                    prdedwvwh.prescription_fill_sales_metric pfsm
    on            
    pf.str_nbr=pfsm.str_nbr and     
    pf.rx_nbr=pfsm.rx_nbr and       
    pf.rx_fill_nbr= pfsm.rx_fill_nbr and            
    pf.rx_partial_fill_nbr =pfsm.rx_partial_fill_nbr and      
    pf.fill_enter_dt=pfsm.fill_enter_dt and       
    pf.fill_sold_dt=pfsm.fill_sold_dt                 
    inner join  
                    prdedwvwh.drug_cur dd
    on            
                    pf.drug_id=dd.drug_id
    and ndc11 in ('?') 
    inner join  
                    prdedwvwh.location_store ls 
    on            
                    pf.str_nbr=ls.str_nbr 
    and ls.mail_retail_ind ='RETAIL'               

    group by 1,2,3,4,5,6     

提交此查询的客户端工具是什么

为了能够从任何客户端使用它,您需要在存储过程中使用动态SQL或创建宏,如:

    replace macro mymac(ndc integer, start_dt date, end_date date)
    as
    ( select ls.str_nbr, ndc11, wic_nbr, prod_name, pkg_sz, pkg_qty,
         count(*) as rx_volume, sum(fill_qty_dspn), sum(fill_gross_profit_dlrs),
         sum(fill_revenue_dlrs), sum(fill_cost_dlrs)     
      from (select * from prdedwvwh.prescription_fill_sold 
            where fill_sold_dt Between :start_dt And :end_dt ) as pf           
        inner join  
                        prdedwvwh.prescription_fill_sales_metric pfsm
        on            
        pf.str_nbr=pfsm.str_nbr and     
        pf.rx_nbr=pfsm.rx_nbr and       
        pf.rx_fill_nbr= pfsm.rx_fill_nbr and            
        pf.rx_partial_fill_nbr =pfsm.rx_partial_fill_nbr and      
        pf.fill_enter_dt=pfsm.fill_enter_dt and       
        pf.fill_sold_dt=pfsm.fill_sold_dt                 
        inner join  
                        prdedwvwh.drug_cur dd
        on            
                        pf.drug_id=dd.drug_id
        and ndc11 = :ndc
        inner join  
                        prdedwvwh.location_store ls 
        on            
                        pf.str_nbr=ls.str_nbr 
        and ls.mail_retail_ind ='RETAIL'               

        group by 1,2,3,4,5,6;  
    ) ;

但正如Andrew所写,您不能在一个参数内传递多个值(至少在TD14之前不容易)

请不要在(?)中使用单引号:
ndc11
。用单引号,你真的是在发送?作为你的约束。不过,我不确定您是否可以对in列表使用参数标记。多亏了这两种标记。我写了一篇不同的文章,因为你是对的。