读书人

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

发布时间: 2013-10-31 12:03:52 作者: rapoo

帮忙分下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.*
这样有重复列吧,
后面那样写 应该没问题吧

读书人网 >oracle

热点推荐