我怎样才能使用&引用;在teradata中,以便每次运行查询时都会提示我输入新数据?
我正在access中使用下面的查询来构建一个数据库。我想用不同的日期范围和不同的“ndc”编号使用此查询。在下面的查询中,我使用了问号,但没有得到结果。我知道我能用吗?在Sql server中,但teradata不接受这种模糊性。我是否可以这样做,而不必指定日期范围和“ndc”编号我怎样才能使用&引用;在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
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列表使用参数标记。多亏了这两种标记。我写了一篇不同的文章,因为你是对的。