首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

帮忙分下SQL 语句哪里出错了,多谢

2013-10-31 
帮忙分下SQL 语句哪里出错了,谢谢!本帖最后由 ggxxkkll 于 2013-09-06 16:25:01 编辑下面是SQL语句:SELECT

帮忙分下SQL 语句哪里出错了,谢谢!
本帖最后由 ggxxkkll 于 2013-09-06 16:25:01 编辑 下面是SQL语句:


SELECT
    CAST(S_TP2_Customer.CUST_NUMBER as Varchar(15)) as Cust,
    S_TP2_Siebel.*,
    S_TP2_CompanyInfo.COMPANY_NUMBER,
    cast(NULLIF(
    otranslate(
      case         
        when position('!' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('@' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('#' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('$' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('%' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('^' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('&' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('*' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('(' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position(')' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('-' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('_' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('+' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('=' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('{' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('[' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('}' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position(']' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('|' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('\' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position(':' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position(';' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('"' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('''' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('<' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position(',' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('>' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('.' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('?' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        when position('/' in S_TP2_CompanyInfo.COMPANY_NUMBER) > 0  then NULL
        else S_TP2_CompanyInfo.COMPANY_NUMBER
      end, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', ''
      ), '') 
      as varchar(30)) as CRN_Initial, 
      otranslate(cast(CRN_Initial as varchar(30)), '0', '') as Testa

  FROM EDW1TST_StagePerm.S_TP2_Customer S_TP2_Customer


  
 
  LEFT OUTER JOIN EDW1TST_StagePerm.S_TP2_CompanyInfo S_TP2_CompanyInfo
  ON S_TP2_Customer.CUST_NUMBER = S_TP2_CompanyInfo.CUST_NUMBER
 AND date (date) between S_TP2_CompanyInfo.Hist_Start_Dt and S_TP2_CompanyInfo.Hist_End_Dt
  
  LEFT OUTER JOIN EDW1TST_StagePerm.S_TP2_Siebel S_TP2_Siebel
  ON S_TP2_Customer.CUST_NUMBER = S_TP2_Siebel.CUST_NUMBER
  AND date (date) between S_TP2_Siebel.Hist_Start_Dt and S_TP2_Siebel.Hist_End_Dt
    
  
   --LEFT OUTER JOIN EDW1TST_StageTemp.I_CDI_SBL_Party_Name I_CDI_SBL_Party_Name_C
   --ON I_CDI_SBL_Party_Name_C.CRM_ID = S_TP2_Siebel.Siebel_ID
  
   
  WHERE date (date) between S_TP2_Customer.Hist_Start_Dt and S_TP2_Customer.Hist_End_Dt
  AND S_TP2_Customer.INTENDED_USE = 'BUSINESS'
  AND S_TP2_Customer.CUST_NUMBER  = 5991513



执行结果为:
图片1:(不包含青色的SQL语句的执行结果)
帮忙分下SQL 语句哪里出错了,多谢

图片2:(包含青色的SQL语句的执行结果)
帮忙分下SQL 语句哪里出错了,多谢

为什么加入了青色的 SQL语句后, 最后一个字段Testa就变成了 ? 了呢?
请高手指教,帮忙分析下!
[解决办法]
让我来猜猜。
你上面好多都是问号啊,出现问号的原因是不是因为你使用的工具的一列太小了,显示不完全?
你使用的是什么工具啊,把列拉宽点,或换个工具试试。
[解决办法]
引用:
Quote: 引用:

让我来猜猜。
你上面好多都是问号啊,出现问号的原因是不是因为你使用的工具的一列太小了,显示不完全?
你使用的是什么工具啊,把列拉宽点,或换个工具试试。


不用关心前面的问号,只需要弄清楚在我加入下面的SQL语句:
LEFT OUTER JOIN EDW1TST_StageTemp.I_CDI_SBL_Party_Name I_CDI_SBL_Party_Name_C
ON I_CDI_SBL_Party_Name_C.CRM_ID = S_TP2_Siebel.Siebel_ID
最后一列Testa为什么从 87221变成了 ?  了呢?

我感觉就是列宽的问题呀,下面那个图testa列明显没有上面那个图的宽

[解决办法]
很可能是内容显示不全
[解决办法]
用的是什么工具查询
[解决办法]
select A.*,  B.*, B.字段2, C.*
这样有重复列吧,
后面那样写 应该没问题吧

热点排行