加入不在Oracle中工作错误为nctb:电话号码无效标识符

加入不在Oracle中工作错误为nctb:电话号码无效标识符,oracle,Oracle,我有2个查询,希望使用join检索数据 第一次查询如下,检索“电话号码”列 第二次查询如下,检索2列“MSISDN”和“shi” 我想使用第一个查询的“电话号码”和第二个查询的“MSISDN”列将这两个查询连接起来,去掉双引号。没什么好东西 应该是 SELECT "Phone_Number" --> double quotes here as well, if you used them ... FROM ( (SELECT p.VALUE "P

我有2个查询,希望使用join检索数据

第一次查询如下,检索“电话号码”列

第二次查询如下,检索2列“MSISDN”和“shi”


我想使用第一个查询的“电话号码”和第二个查询的“MSISDN”列将这两个查询连接起来,去掉双引号。没什么好东西

应该是

SELECT "Phone_Number"                     --> double quotes here as well, if you used them ...
  FROM ( (SELECT p.VALUE "Phone_Number"   --> ... here
或者,正如我所建议的,不要使用双引号:

select phone_number
  from ((select p.value phone_number 

也许最好将电话号码作为子查询包含在where语句中

所以像这样的事情

  SELECT 
            TRIM (REPLACE (shid.msisdn, CHR (10), '')) Phone_Number 

        FROM 
            (  
                SELECT 
                    shl.iccid, 
                    MAX (shl.sim_history_id) AS shi
                FROM 
                    ninas_dba.sim_history_tb shl
                GROUP BY shl.iccid
            ) shs,
        ninas_dba.sim_history_tb shid,
        ninas_dba.sim_history_tb sh,
        ninas_dba.sim_card_tb sc,
        ninas_dba.sim_card_type_tb sct,
        ninas_dba.Tenant_tb smt

        WHERE     
            shid.iccid = shs.iccid
            AND sh.sim_history_id = shs.shi
            AND shid.sim_status_id = 102
            AND sc.iccid = shid.iccid
            AND TRIM (REPLACE (shid.msisdn, CHR (10), '')) in (
               SELECT 
                  p.VALUE
               FROM netcracker_rdb.RDB_BPI rd
               JOIN netcracker_rdb.RDB_PROD_OFFER rpo
                 ON rd.PRODUCT_OFFERING = rpo.OBJECT_ID
               JOIN netcracker_rdb.nc_params_pim p
                 ON  p.object_id = rd.object_id
                     AND attr_id = 9138903692913092143
            )
如其他答案中所述,只有当您的别名中有空格,所以“电话号码”需要引号时,才需要引号

我还认为,您需要重新评估您试图实现的目标,在这个查询中,检索单个属性会发生很多事情。也许有不同的途径可以追求同样的结果


希望有帮助。

无法检索电话号码栏您的问题看起来很混乱,请按照规则进行查询好吗?见:和在ANSI-92 SQL标准(超过25年前)中,旧样式的逗号分隔表列表样式被正确的ANSI
JOIN
语法所取代,它的使用是不鼓励的DHI marc_s,实际上,我们从另一个团队得到了这一点,并指示我们不要修改两个查询,只相应地连接它们。所以我不得不跟着它走。我会记住这一点并在将来使用。。谢谢你的信息。嗨,Thnx。。一旦我从工作中解脱出来,我也会检查这个。。。知道第二条路也很好。。
select phone_number
  from ((select p.value phone_number 
  SELECT 
            TRIM (REPLACE (shid.msisdn, CHR (10), '')) Phone_Number 

        FROM 
            (  
                SELECT 
                    shl.iccid, 
                    MAX (shl.sim_history_id) AS shi
                FROM 
                    ninas_dba.sim_history_tb shl
                GROUP BY shl.iccid
            ) shs,
        ninas_dba.sim_history_tb shid,
        ninas_dba.sim_history_tb sh,
        ninas_dba.sim_card_tb sc,
        ninas_dba.sim_card_type_tb sct,
        ninas_dba.Tenant_tb smt

        WHERE     
            shid.iccid = shs.iccid
            AND sh.sim_history_id = shs.shi
            AND shid.sim_status_id = 102
            AND sc.iccid = shid.iccid
            AND TRIM (REPLACE (shid.msisdn, CHR (10), '')) in (
               SELECT 
                  p.VALUE
               FROM netcracker_rdb.RDB_BPI rd
               JOIN netcracker_rdb.RDB_PROD_OFFER rpo
                 ON rd.PRODUCT_OFFERING = rpo.OBJECT_ID
               JOIN netcracker_rdb.nc_params_pim p
                 ON  p.object_id = rd.object_id
                     AND attr_id = 9138903692913092143
            )