“无法解决”;数值'-';“不被承认”;雪花SQL查询中出错

“无法解决”;数值'-';“不被承认”;雪花SQL查询中出错,sql,snowflake-cloud-data-platform,snowflake-schema,Sql,Snowflake Cloud Data Platform,Snowflake Schema,我正在将下面的sql查询转换为Snowflake,得到错误“Numeric Value”-“不可识别”,但它没有行号。我假设它在整个查询中引用了各种“-1”实例,但没有引用任何行,因此不清楚是什么导致了问题。如果是对“-1”的各种引用,那么雪花中的替代品是什么?在这种情况下,Try-To-u号码不起作用,所以希望社区有建议 SELECT -- DOCUMENT HEADER INFORMATION 'ORPC'

我正在将下面的sql查询转换为Snowflake,得到错误“Numeric Value”-“不可识别”,但它没有行号。我假设它在整个查询中引用了各种“-1”实例,但没有引用任何行,因此不清楚是什么导致了问题。如果是对“-1”的各种引用,那么雪花中的替代品是什么?在这种情况下,Try-To-u号码不起作用,所以希望社区有建议

SELECT 
-- DOCUMENT HEADER INFORMATION
'ORPC'                                                  AS "Doc_Module" 
, DD."DocEntry"                                             AS "Doc_DocEntry"
, DD."ObjType"                                              AS "Doc_ObjectType"
, 'A/P Credit'                                              AS "Doc_TypeName_DIM"   
, 'PC'                                                      AS "Doc_TransTypeAbrev" 
, DH."DocNum"                                                   AS "Doc_Number"
, DH."DocStatus"                                                AS "Doc_Status"     --Open 
or Closed
, DD."LineNum"                                              AS "Doc_LineNumberInternal"
, DD."VisOrder"                                             AS "Doc_LineNumberVisible"
, NULLIF( DD."BaseEntry", -1 )                              AS "Doc_SourceEntry"
, DD."BaseType"                                             AS "Doc_SourceType"
, NULLIF( DD."BaseLine", -1 )                                   AS "Doc_SourceLine"
, DD."TargetType"                                               AS "Doc_TargetType"
, NULLIF( DD."TrgetEntry", -1 )                             AS "Doc_TargetEntry"
-- BP
, DH."CardCode"                                             AS "Doc_BPCardCode"
--DATES
, CAST( DH."DocDate" AS DATETIME )                          AS "Date_Posting_DIM"
, CAST( NULLIF(DD."ShipDate", DH."DocDueDate") AS DATETIME )    AS "Date_ShipDue"
, CAST( DD."ActDelDate" AS DATETIME )                           AS "Date_ActDelivery"
, CAST( DH."TaxDate" AS DATETIME )                          AS "Date_Document"
, CAST( DATE_PART( yyyy, DH."DocDate" ) AS NVARCHAR )           AS "Date_Posting_Year_DIM"
, CAST( DATE_PART( yyyy, DH."DocDate" ) AS NVARCHAR ) + '-'+
CAST(RIGHT(DATE_PART( mm, DH."DocDate" )+100,2) AS NVARCHAR) AS "Date_Posting_YYYYMM_DIM"
, LEFT( MONTHNAME(DH."DocDate"), 3 )                    AS "Date_Posting_MonthShort"
, MONTHNAME(DH."DocDate")                               AS "Date_Posting_Month_DIM"
, DATEDIFF( dd, NULLIF(DD."ShipDate", DH."DocDueDate"), DD."ActDelDate" ) AS "Date_DaysLate"  
--Positive is days late, negative is days early
--WH and LOCATION
, CASE WHEN DD."WhsCode" IS NULL OR WH."WhsName" IS NULL    
THEN '- na -' 
ELSE DD."WhsCode" +' - '+  WH."WhsName" END                 AS "Warehouse"
, NULLIF( WH."WhsName", '- na -' )                          AS "Warehouse_Name"
, NULLIF( DD."WhsCode", '- na -' )                          AS "Warehouse_Code"     
, CASE  WHEN WH."Location" IS NULL OR LOC."Location" IS NULL
    THEN '- na -'
    ELSE RIGHT( CAST( WH."Location" + 100 AS NVARCHAR), 2 ) +' - '+ LOC."Location"
                                                    END AS "Warehouse_Location_DIM"  
, NULLIF( WH."Location", -1 )                                   AS "Warehouse_LocationCode"

--LINE ITEM & QTY
, DD."LineStatus"                                               AS "Line_Status"   --Open, 
Closed
, CAST( NULLIF( DD."ItemCode", '- na -' ) AS NVARCHAR ) 
 + '  ' +  NULLIF( DD."Dscription", '' )                        AS "Line_Item_DIM"
, NULLIF( DD."ItemCode", '- na -' )                         AS "Line_ItemCode"
, NULLIF( DD."Dscription", '' )                             AS "Line_ItemName"
, NULLIF( DD."SubCatNum", '' )                              AS "Line_BPItemNumber"
, CASE  WHEN LTRIM(RTRIM(NULLIF( DD."Project", '' ))) <> ''
    THEN LTRIM(RTRIM(DD."Project"))
    ELSE LTRIM(RTRIM(NULLIF( DH."Project", '' )))       END AS "Line_ProjectCode"
, NULLIF( PJ."PrjName", '' )                                    AS "Line_ProjectName_DIM"

-- QUANTITY
, CASE  WHEN DD."NoInvtryMv" = 'Y'                      THEN 0                               
ELSE -1 * DD."Quantity"                         END AS "Qty_OrderedPurchUnits_FACT" 
, CASE  WHEN DD."NoInvtryMv" = 'Y'                      THEN 0                               
ELSE -1 * DD."InvQty"                           END AS "Qty_OrderedInvUnits_FACT" 
, CASE  WHEN DD."LineStatus" = 'O' AND DH."DocStatus" = 'O' THEN -1 * DD."OpenCreQty"                
ELSE 0                                          END AS "Qty_OpenUnits_FACT"
, CASE  WHEN DD."LineStatus" = 'O' AND DH."DocStatus" = 'O' THEN -1 * DD."OpenInvQty"                
ELSE 0                                          END AS "Qty_OpenInvUnits_FACT"

--PRICE
, CASE  WHEN DD."LineStatus" = 'O' AND DH."DocStatus" = 'O' AND DD."Quantity" <> 0
    THEN NULLIF( ( DD."LineTotal" / DD."Quantity" ) * DD."OpenCreQty"   , 0 )                    
ELSE 0                                          END AS "Line_ItemPriceOpenUnits_DIM"  -- 
Purch UoM
, CASE  WHEN DD."LineStatus" = 'O' AND DH."DocStatus" = 'O' AND DD."InvQty" <> 0
    THEN NULLIF( ( DD."LineTotal" / DD."InvQty"   ) * DD."OpenCreQty"   , 0 )                    
ELSE 0                                          END AS "Line_ItemPriceOpenInvUnits_DIM"
, CASE  WHEN DD."Quantity" = 0                          THEN  NULLIF( DD."LineTotal", 0 )        
ELSE NULLIF( DD."LineTotal", 0 ) / DD."Quantity"    END AS "Line_ItemPrice_DIM"   --Purch 
UoM
, CASE  WHEN DD."Quantity" = 0                          THEN  NULLIF( DD."LineTotal", 0 )        
ELSE NULLIF( DD."LineTotal", 0 ) / DD."InvQty"      END AS "Line_ItemPriceInvUnits_DIM"   
, -1 * DD."LineTotal"                                                                                                                                
AS "Line_TotalPrice_FACT"

, COALESCE( DD."SlpCode" , DH."SlpCode" , BP."SlpCode" )            AS "Buyer_Code"     -- 
Line first, Doc header, BP
 , COALESCE( DSP."SlpName", HSP."SlpName", PSP."SlpName" )          AS "Buyer_Name_DIM" -- 
Line first, Doc header, BP

FROM "RPC1" DD
INNER JOIN "RPC12" AD ON DD."DocEntry" = AD."DocEntry"
LEFT OUTER JOIN "OCST" ST ON AD."StateS" = ST."Code" AND AD."CountryS" = ST."Country"       --Join on State code & country code in case state code appears in more than one country
LEFT OUTER JOIN "OCRY" RY ON AD."CountryS"=RY."Code"                            --Country
INNER JOIN "ORPC" DH ON DD."DocEntry" = DH."DocEntry"                           --Doc Header
    LEFT OUTER JOIN "OSLP" HSP ON DH."SlpCode" = HSP."SlpCode"                  --Doc Header Sales person
    LEFT OUTER JOIN "OCRD" BP ON BP."CardCode" = DH."CardCode"                  --Business Partner.  Needed here for SLP code
        LEFT OUTER JOIN "OSLP" PSP ON PSP."SlpCode" = BP."SlpCode"              --BP Sales person
LEFT OUTER JOIN "OITM" IM ON DD."ItemCode" = IM."ItemCode"                      --Item Master
    LEFT OUTER JOIN "ORC_BE_PACK_TYPE" PT ON IM."U_ORC_BE_PACK_TYPE" = PT."Code"    --Pack type
LEFT OUTER JOIN "OWHS" WH ON DD."WhsCode" = WH."WhsCode"                        --Warehouse
    LEFT OUTER JOIN "OLCT" LOC ON WH."Location" = LOC."Code"                    --WH Location
LEFT OUTER JOIN "OSLP" DSP ON DSP."SlpCode" = DD."SlpCode"                      --Doc Line Sales person
LEFT OUTER JOIN "OPRJ" PJ ON UPPER(LTRIM(RTRIM( PJ."PrjCode" ))) = CASE WHEN       LTRIM(RTRIM(NULLIF( DD."Project", '' ))) <> ''
                                                                    THEN UPPER(LTRIM(RTRIM(        DD."Project"     )))
                                                                    ELSE UPPER(LTRIM(RTRIM(NULLIF( DH."Project", '' ))))        END  --DH.Project is aka BP Project on the doc

WHERE   DH."CANCELED" = 'N'  --Do not show 'Y' cancelled doc or 'C' cancellation offset doc
选择
--文档标题信息
“ORPC”作为“文件单元”
,将“DocEntry”改为“Doc\u DocEntry”
,DD.“ObjType”作为“Doc_ObjectType”
,“应付贷方”为“单据类型名称”
“PC”作为“Doc_TransTypeAbrev”
,DH.“DocNum”作为“Doc_编号”
,DH.“DocStatus”作为“Doc_Status”--打开
还是关闭
,DD.“LineNum”作为“Doc\u linenumbernal”
,DD.“VisOrder”为“Doc\u LineNumberVisible”
,NULLIF(DD.“BaseEntry”,-1)作为“Doc\u SourceEntry”
,DD.“BaseType”作为“Doc\u SourceType”
,NULLIF(DD.“BaseLine”,-1)作为“Doc\u SourceLine”
,DD.“TargetType”为“Doc_TargetType”
,NULLIF(DD.“TrgetEntry”,-1)作为“Doc\u TargetEntry”
--英国石油公司
,DH.“CardCode”作为“Doc_BPCardCode”
--日期
,将(DH.“DocDate”作为日期时间)转换为“日期”
,将(空号(DD“ShipDate”,DH“DocDueDate”)转换为日期时间)转换为“交货日期”
,将(DD“ActDelDate”改为DATETIME)改为“Date\u ActDelivery”
,将(DH.“TaxDate”作为日期时间)转换为“日期文件”
,将(日期部分(DH.yyyy.“DocDate”)转换为“日期过账年度”
,铸造(日期部分(yyyy,DH.“DocDate”)为NVARCHAR)+'-'+
铸造(右侧(日期部分(DH.“DocDate”)+100,2)为NVARCHAR)为“发布日期YYYYMM DIM”
,左(MONTHNAME(DH.“DocDate”),3)为“发布日期”
,MONTHNAME(DH.“DocDate”)为“日期、发布日期、月份”
,DATEDIFF(dd,NULLIF(dd.“ShipDate”,DH.“DocDueDate”),dd.“ActDelDate”)作为“日期”
--积极的是晚几天,消极的是早几天
--WH与位置
,DD“WhsCode”为空或WH“WhsName”为空时的大小写
然后'-na-'
其他DD.“WhsCode”+'-'+WH.“WhsName”结尾为“仓库”
,NULLIF(WH.“WhsName”,'-na-')作为“仓库名称”
,NULLIF(DD.“WhsCode”,“-na-”)作为“仓库代码”
,WH.“Location”为空或LOC.“Location”为空时的情况
然后'-na-'
其他右侧(铸造(WH.“位置”+100作为NVARCHAR),2)+'-'+LOC.“位置”
结尾为“仓库位置尺寸”
,NULLIF(WH.“位置”,-1)作为“仓库位置代码”
--行项目和数量
,DD.“LineStatus”作为“Line_Status”--打开,
关闭
,强制转换(NULLIF(DD.“ItemCode”,“-na-”)为NVARCHAR)
+''+NULLIF(DD.“dscript”,'')作为“行项目尺寸”
,NULLIF(DD.“ItemCode”,“-na-”)作为“Line_ItemCode”
,NULLIF(DD.“dscript”,'')作为“Line_ItemName”
,NULLIF(DD.“SubCatNum”和“”)作为“行项目编号”
,当LTRIM(RTRIM(NULLIF(DD.“Project”,'')时的情况
然后是LTRIM(RTRIM(DD.“项目”))
ELSE LTRIM(RTRIM(NULLIF(DH.“Project”,“”))以“Line_ProjectCode”结尾
,NULLIF(PJ.“PrjName”,'')作为“Line\u ProjectName\u DIM”
--数量
,DD.“NoInvtryMv”=“Y”则为0
ELSE-1*DD“数量”结尾为“订购数量采购事实”
,DD.“NoInvtryMv”=“Y”则为0
ELSE-1*DD“InvQty”结束为“订购数量单位”
,当DD“LineStatus”=“O”和DH“DocStatus”=“O”时,则为-1*DD“OpenCreQty”
否则0结束为“数量\u开放单位\u事实”
,当DD“LineStatus”=“O”和DH“DocStatus”=“O”时,则为-1*DD“OpenInvQty”
否则0结束为“数量\u OpenInvUnits\u事实”
--价格
,DD“LineStatus”=“O”和DH时的情况。“DocStatus”=“O”和DD“Quantity”0
然后为空((DD.“LineTotal”/DD.“Quantity”)*DD.“OpenCreQty”,0)
否则0以“行\u项价格OpenUnits\u尺寸”结尾--
采购计量单位
,DD“LineStatus”=“O”和DH时的情况。“DocStatus”=“O”和DD“InvQty”0
然后为空((DD.“LineTotal”/DD.“InvQty”)*DD.“OpenCreQty”,0)
否则0结束为“行\u项目价格OpenInvUnits\u尺寸”
,如果DD“数量”=0,则为空(DD“LineTotal”,0)
否则为空(DD.“LineTotal”,0)/DD.“Quantity”结尾为“Line_ItemPrice_DIM”--采购
计量单位
,如果DD“数量”=0,则为空(DD“LineTotal”,0)
否则为空(DD.“LineTotal”,0)/DD.“InvQty”结束为“Line\u ItemPriceInvUnits\u DIM”
,-1*DD.“LineTotal”