Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在Teradata查询中使用Excel行值_Sql_Teradata - Fatal编程技术网

Sql 在Teradata查询中使用Excel行值

Sql 在Teradata查询中使用Excel行值,sql,teradata,Sql,Teradata,要求:必须从2个或多个表中选择值,在查询中,条件应采用excel记录中的值(约5 k) 查询: select distinct tableA.x ,tableB.phone_nbr, tableC.tmp_oper_div_cd from Table A join Table B on A.id= B.iD left join table C on A.fc = C.fc left join table h on

要求:必须从2个或多个表中选择值,在查询中,条件应采用excel记录中的值(约5 k)

查询:

     select 
     distinct 
     tableA.x
    ,tableB.phone_nbr,
     tableC.tmp_oper_div_cd 
     from Table A join Table B on A.id= B.iD
     left join table C on A.fc = C.fc
     left join table h on fc.qr = h.qr
     --h.hldx_cd=s.htl_cd
    where tableB.phone_nbr like  any 
    ('%35051111%' ,'%35051155%','%35051113%','%35051190%')
    and h.hldx_cd='TYOHC'
在上述查询中,(请忽略连接缺陷等) hldx_cd和Phone_nbr值来自excel,Phone_nbr值没有正确的格式。在excel中,我们得到了大约5 k hldx_cd,每个酒店代码有多个电话号码


请让我知道实现这一目标的逻辑。提前感谢。

创建一个临时表来存放您的电话号码:

CREATE MULTISET VOLATILE TABLE phones (pn VARCHAR(20), hldx_cd VARCHAR(20)) ON COMMIT PRESERVE ROWS;
在excel中,为每个电话号码制作插入语句:

="INSERT INTO phones VALUES ('" & A1 & "', '" & B1 & "');"
假设你的电话号码列表在A栏,酒店代码在B栏,把它复制下来,做5000条插入语句。然后将它们复制到sql客户端并运行它们。这需要一段时间,你的DBA会讨厌你。为了使DBA远离您的后备,考虑创建一个常规表,并使用FASTLoad、MultLoad、TPT或BTEQ导入您的数据。显然,这是一个小小的学习曲线(尽管Teradata Studios会让它变得很快),并且假设您至少在服务器上的数据库中具有创建表的安全性

现在,您可以加入以获取您的匹配项:

SELECT DISTINCT tableA.x
    ,tableB.phone_nbr
    ,tableC.tmp_oper_div_cd
FROM TABLE A
JOIN TABLE B ON A.id = B.iD
LEFT JOIN TABLE C ON A.fc = C.fc
LEFT JOIN TABLE h ON fc.qr = h.qr
INNER JOIN phones ON tableB.phone_nbr = phones.pn AND h.hldx_cd = phones.hldx_cd;

您在这里没有太多其他好的选择,因为您的比较数据很大,而且停留在excel中,对Teradata没有任何好处。

但问题是:tableB.Phone\u NBR将有一个单独的值,需要与一个值模式进行比较:tableB.Phone\u NBR和其他任何值一样(“%35051111%”、“%35051155%”、“%35051113%”、“%35051190%”),那么怎样才能对列值使用like-any呢?-谢谢