db2—使用自定义sql查询将tableau连接到teradata

svgewumm  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(485)

edit:即使我尝试在任何地方删除'as',我仍然会在一些看起来像普通sql命令的事情上出错。如果我删除'as',下一个错误是:
[ibm][cli driver][db2]sql0199n在“”之后使用保留字“cast”无效。预期的令牌可能包括:“,)”。sqlstate=42601
问:我正在尝试用一个自定义sql查询连接到teradata,虽然它在teradata sql assistant中运行得很好,但在tableau中运行时,我总是会遇到错误。
其中一个错误如下所示,但即使我尝试更改某些内容,也会出现类似的错误:
[ibm][cli driver][db2]sql0199n保留字“as”following“”的使用无效。预期的标记可能包括:“join cross inner left right full(”)。sqlstate=42601
这是查询(对不起,太长了):

  1. WITH RQSTS AS(
  2. select CAST( M.RQST_ID AS VARCHAR(20)) AS MASTER_RQST_ID,
  3. M.RQST_TYP_CD
  4. FROM PRTHD.HOST_RQST AS M --MASTER
  5. WHERE M.MSTR_RQST_ID IS NULL
  6. AND M.crt_user_id='SXB8NBS'
  7. AND M.OCYC_SOQ_RSN_CD = 170
  8. AND date(M.CRT_TS) >= CURRENT_DATE - 7 DAY
  9. ),
  10. RQST_TYPE AS(
  11. select R.MASTER_RQST_ID AS RQST_ID,
  12. NRT.TYP_DESC AS HOST_TYPE
  13. FROM RQSTS AS R
  14. LEFT JOIN PRTHD.N_HOST_RQST_TYP AS NRT
  15. ON R.RQST_TYP_CD = NRT.RQST_TYP_CD
  16. GROUP BY R.MASTER_RQST_ID, NRT.TYP_DESC
  17. ),
  18. PO_DETAILS AS(
  19. select A.*
  20. FROM (
  21. SELECT distinct PRTHD.BYO_PO.DSVC_TYP_CD,
  22. RT.RQST_ID,
  23. RT.HOST_TYPE,
  24. PRTHD.BYO_PO.PO_CMT_TXT,
  25. PRTHD.BYO_PO.BYO_NBR,
  26. CASE WHEN PRTHD.BYO_PO.DSVC_TYP_CD = 2 THEN RIGHT('00'||PRTHD.BYO_PO.BYO_NBR,2)
  27. ELSE RIGHT('00'|| PRTHD.BYO_PO_LOC_SKU.LOC_NBR,2) END
  28. || PRTHD.BYO_PO.acct_po_typ_cd || RIGHT('00000'||PRTHD.BYO_PO.PO_CTRL_NBR,5) AS PO,
  29. PRTHD.BYO_PO.ORD_REF_NBR,
  30. PRTHD.BYO_PO_LOC_SKU.MKT_DC_NBR,
  31. PRTHD.BYO_PO_LOC_SKU.LOC_NBR,
  32. PRTHD.BYO_PO_LOC_SKU.SKU_NBR,
  33. CAST(PRTHD.BYO_PO_LOC_SKU.ORD_QTY AS INTEGER) AS ORD_QTY,
  34. PRTHD.BYO_PO.CRT_DT,
  35. PRTHD.BYO_PO.PO_CTRL_NBR,
  36. M.MVNDR_NM,
  37. PRTHD.BYO_PO.MVNDR_NBR,
  38. PRTHD.BYO_PO.OCYC_SOQ_RSN_CD AS RSN_CD
  39. FROM ((PRTHD.BYO_PO AS BP INNER JOIN PRTHD.BYO_PO_LOC_SKU
  40. ON (PRTHD.BYO_PO.ORD_SEQ_NBR = PRTHD.BYO_PO_LOC_SKU.ORD_SEQ_NBR)
  41. AND (PRTHD.BYO_PO.PO_CTRL_NBR = PRTHD.BYO_PO_LOC_SKU.PO_CTRL_NBR)
  42. AND (PRTHD.BYO_PO.ACCT_PO_TYP_CD = PRTHD.BYO_PO_LOC_SKU.ACCT_PO_TYP_CD)
  43. AND (PRTHD.BYO_PO.MKT_DC_NBR = PRTHD.BYO_PO_LOC_SKU.MKT_DC_NBR)
  44. AND (PRTHD.BYO_PO.MKT_DC_IND = PRTHD.BYO_PO_LOC_SKU.MKT_DC_IND)
  45. AND (PRTHD.BYO_PO.BYO_NBR = PRTHD.BYO_PO_LOC_SKU.BYO_NBR))
  46. INNER JOIN PRTHD.SKU
  47. ON PRTHD.BYO_PO_LOC_SKU.SKU_NBR = PRTHD.SKU.SKU_NBR)
  48. INNER JOIN PRTHD.BYO_PO_SKU
  49. ON (PRTHD.SKU.SKU_NBR = PRTHD.BYO_PO_SKU.SKU_NBR)
  50. AND (PRTHD.BYO_PO_LOC_SKU.BYO_NBR = PRTHD.BYO_PO_SKU.BYO_NBR)
  51. AND (PRTHD.BYO_PO_LOC_SKU.MKT_DC_IND = PRTHD.BYO_PO_SKU.MKT_DC_IND)
  52. AND (PRTHD.BYO_PO_LOC_SKU.MKT_DC_NBR = PRTHD.BYO_PO_SKU.MKT_DC_NBR)
  53. AND (PRTHD.BYO_PO_LOC_SKU.ACCT_PO_TYP_CD = PRTHD.BYO_PO_SKU.ACCT_PO_TYP_CD)
  54. AND (PRTHD.BYO_PO_LOC_SKU.PO_CTRL_NBR = PRTHD.BYO_PO_SKU.PO_CTRL_NBR)
  55. AND (PRTHD.BYO_PO_LOC_SKU.ORD_SEQ_NBR = PRTHD.BYO_PO_SKU.ORD_SEQ_NBR)
  56. AND (PRTHD.BYO_PO_LOC_SKU.PO_LINE_NBR = PRTHD.BYO_PO_SKU.PO_LINE_NBR)
  57. LEFT JOIN PRTHD.MVNDR AS M
  58. ON M.MVNDR_NBR = PRTHD.BYO_PO.MVNDR_NBR
  59. INNER JOIN RQST_TYPE AS RT
  60. ON TRIM(SUBSTR(BP.PO_CMT_TXT,6,11)) = RT.RQST_ID
  61. ) AS A)
  62. Select P.RQST_ID,
  63. P.DSVC_TYP_CD,
  64. CASE WHEN P.DSVC_TYP_CD =1 THEN 'DTS'
  65. WHEN P.DSVC_TYP_CD =2 THEN 'RDC AGG'
  66. WHEN P.DSVC_TYP_CD =3 THEN 'RDCX'
  67. END AS DSVC_TYP_DESC ,
  68. CASE WHEN P.DSVC_TYP_CD =2 AND S.STR_NBR IS NOT NULL THEN 'Y'
  69. ELSE 'N' END AS RDC_AGG_PEG_FLG,
  70. CASE WHEN P.DSVC_TYP_CD =2 AND S.STR_NBR IS NOT NULL THEN P.ORD_REF_NBR
  71. ELSE P.PO END AS PO_NBR,
  72. P.BYO_NBR,
  73. P.PO_CTRL_NBR,
  74. P.CRT_DT,
  75. P.HOST_TYPE,
  76. P.MVNDR_NBR,
  77. P.MVNDR_NM,
  78. CASE WHEN P.DSVC_TYP_CD =2 AND S.STR_NBR IS NOT NULL THEN AR.MKT_DC_NBR
  79. ELSE P.MKT_DC_NBR END AS MKT_DC_NBR,
  80. P.LOC_NBR,
  81. COALESCE(SKU.MER_DEPT_NBR || '-' || D.SHRT_DEPT_NM,'') AS DEPT,
  82. COALESCE(SKU.MER_CLASS_NBR || '-' || MC.SHRT_CLASS_DESC,'') AS CLASS,
  83. COALESCE(SKU.MER_SUB_CLASS_NBR || '-' || MSC.SHRT_SUBCLASS_DESC,'') AS SUB_CLASS,
  84. P.SKU_NBR,
  85. P.ORD_QTY,
  86. COALESCE(SD.AVG_DC_LCOST_AMT*COALESCE(P.ORD_QTY,0),
  87. MSM.CURR_COST_AMT*COALESCE(P.ORD_QTY,0)) AS TOTAL_COST,
  88. SD.AVG_DC_LCOST_AMT AS SD_COST,
  89. MSM.CURR_COST_AMT AS STR_CURR_COST,
  90. MSD.CURR_COST_AMT AS DC_CURR_COST,
  91. P.PO_CMT_TXT,
  92. P.RSN_CD
  93. FROM PO_DETAILS AS P
  94. --SKU HIERARCHY INFO
  95. LEFT JOIN PRTHD.SKU AS SKU
  96. ON SKU.SKU_NBR = P.SKU_NBR
  97. LEFT JOIN PRTHD.DEPT AS D
  98. ON SKU.MER_DEPT_NBR = D.DEPT_NBR
  99. LEFT JOIN PRTHD.MER_CLASS AS MC
  100. ON MC.MER_DEPT_NBR= SKU.MER_DEPT_NBR
  101. AND MC.MER_CLASS_NBR = SKU.MER_CLASS_NBR
  102. LEFT JOIN PRTHD.MER_SUB_CLASS AS MSC
  103. ON MSC.MER_DEPT_NBR= SKU.MER_DEPT_NBR
  104. AND MSC.MER_CLASS_NBR = SKU.MER_CLASS_NBR
  105. AND MSC.MER_SUB_CLASS_NBR = SKU.MER_SUB_CLASS_NBR
  106. LEFT JOIN PRTHD.MVNDR_SKU_DC AS MSD
  107. ON MSD.MVNDR_NBR = P.MVNDR_NBR
  108. AND MSD.SKU_NBR = P.SKU_NBR
  109. AND MSD.DC_NBR = P.LOC_NBR
  110. LEFT JOIN PRTHD.STR AS S
  111. ON S.STR_NBR = P.LOC_NBR
  112. LEFT JOIN PRTHD.SKU_DC AS SD
  113. ON SD.DC_NBR=P.MKT_DC_NBR
  114. AND SD.SKU_NBR=P.SKU_NBR
  115. LEFT JOIN PRTHD.MVNDR_SKU_MKT AS MSM
  116. ON MSM.MVNDR_NBR = P.MVNDR_NBR
  117. AND MSM.SKU_NBR = P.SKU_NBR
  118. AND MSM.MKT_NBR = S.MKT_NBR
  119. LEFT JOIN PRTHD.AGG_RQST AS AR
  120. ON AR.PO_NBR = P.ORD_REF_NBR
  121. AND P.MVNDR_NBR = AR.MVNDR_NBR
  122. AND SKU.MER_DEPT_NBR = AR.MER_DEPT_NBR
  123. AND AR.ORD_DT >= P.CRT_DT

有人能帮我找出这里可能出了什么问题吗?谢谢您!

uajslkp6

uajslkp61#

删除所有 AS :

  1. WITH RQSTS (
  2. select CT(M.RQST_ID VARCHAR(20)) MTER_RQST_ID,
  3. M.RQST_TYP_CD
  4. FROM PRTHD.HOST_RQST M --MTER
  5. WHERE M.MSTR_RQST_ID IS NULL
  6. AND M.crt_user_id = 'SXB8NBS'
  7. AND M.OCYC_SOQ_RSN_CD = 170
  8. AND date(M.CRT_TS) >= CURRENT_DATE - 7 DAY
  9. ),
  10. RQST_TYPE (
  11. select R.MTER_RQST_ID RQST_ID,
  12. NRT.TYP_DESC HOST_TYPE
  13. FROM RQSTS R
  14. LEFT JOIN PRTHD.N_HOST_RQST_TYP NRT ON R.RQST_TYP_CD = NRT.RQST_TYP_CD
  15. GROUP BY R.MTER_RQST_ID,
  16. NRT.TYP_DESC
  17. ),
  18. PO_DETAILS (
  19. select A.*
  20. FROM (
  21. SELECT distinct PRTHD.BYO_PO.DSVC_TYP_CD,
  22. RT.RQST_ID,
  23. RT.HOST_TYPE,
  24. PRTHD.BYO_PO.PO_CMT_TXT,
  25. PRTHD.BYO_PO.BYO_NBR,
  26. CE
  27. WHEN PRTHD.BYO_PO.DSVC_TYP_CD = 2 THEN RIGHT('00' || PRTHD.BYO_PO.BYO_NBR, 2)
  28. ELSE RIGHT('00' || PRTHD.BYO_PO_LOC_SKU.LOC_NBR, 2)
  29. END || PRTHD.BYO_PO.acct_po_typ_cd || RIGHT('00000' || PRTHD.BYO_PO.PO_CTRL_NBR, 5) PO,
  30. PRTHD.BYO_PO.ORD_REF_NBR,
  31. PRTHD.BYO_PO_LOC_SKU.MKT_DC_NBR,
  32. PRTHD.BYO_PO_LOC_SKU.LOC_NBR,
  33. PRTHD.BYO_PO_LOC_SKU.SKU_NBR,
  34. CT(PRTHD.BYO_PO_LOC_SKU.ORD_QTY INTEGER) ORD_QTY,
  35. PRTHD.BYO_PO.CRT_DT,
  36. PRTHD.BYO_PO.PO_CTRL_NBR,
  37. M.MVNDR_NM,
  38. PRTHD.BYO_PO.MVNDR_NBR,
  39. PRTHD.BYO_PO.OCYC_SOQ_RSN_CD RSN_CD
  40. FROM (
  41. (
  42. PRTHD.BYO_PO BP
  43. INNER JOIN PRTHD.BYO_PO_LOC_SKU ON (
  44. PRTHD.BYO_PO.ORD_SEQ_NBR = PRTHD.BYO_PO_LOC_SKU.ORD_SEQ_NBR
  45. )
  46. AND (
  47. PRTHD.BYO_PO.PO_CTRL_NBR = PRTHD.BYO_PO_LOC_SKU.PO_CTRL_NBR
  48. )
  49. AND (
  50. PRTHD.BYO_PO.ACCT_PO_TYP_CD = PRTHD.BYO_PO_LOC_SKU.ACCT_PO_TYP_CD
  51. )
  52. AND (
  53. PRTHD.BYO_PO.MKT_DC_NBR = PRTHD.BYO_PO_LOC_SKU.MKT_DC_NBR
  54. )
  55. AND (
  56. PRTHD.BYO_PO.MKT_DC_IND = PRTHD.BYO_PO_LOC_SKU.MKT_DC_IND
  57. )
  58. AND (
  59. PRTHD.BYO_PO.BYO_NBR = PRTHD.BYO_PO_LOC_SKU.BYO_NBR
  60. )
  61. )
  62. INNER JOIN PRTHD.SKU ON PRTHD.BYO_PO_LOC_SKU.SKU_NBR = PRTHD.SKU.SKU_NBR
  63. )
  64. INNER JOIN PRTHD.BYO_PO_SKU ON (PRTHD.SKU.SKU_NBR = PRTHD.BYO_PO_SKU.SKU_NBR)
  65. AND (
  66. PRTHD.BYO_PO_LOC_SKU.BYO_NBR = PRTHD.BYO_PO_SKU.BYO_NBR
  67. )
  68. AND (
  69. PRTHD.BYO_PO_LOC_SKU.MKT_DC_IND = PRTHD.BYO_PO_SKU.MKT_DC_IND
  70. )
  71. AND (
  72. PRTHD.BYO_PO_LOC_SKU.MKT_DC_NBR = PRTHD.BYO_PO_SKU.MKT_DC_NBR
  73. )
  74. AND (
  75. PRTHD.BYO_PO_LOC_SKU.ACCT_PO_TYP_CD = PRTHD.BYO_PO_SKU.ACCT_PO_TYP_CD
  76. )
  77. AND (
  78. PRTHD.BYO_PO_LOC_SKU.PO_CTRL_NBR = PRTHD.BYO_PO_SKU.PO_CTRL_NBR
  79. )
  80. AND (
  81. PRTHD.BYO_PO_LOC_SKU.ORD_SEQ_NBR = PRTHD.BYO_PO_SKU.ORD_SEQ_NBR
  82. )
  83. AND (
  84. PRTHD.BYO_PO_LOC_SKU.PO_LINE_NBR = PRTHD.BYO_PO_SKU.PO_LINE_NBR
  85. )
  86. LEFT JOIN PRTHD.MVNDR M ON M.MVNDR_NBR = PRTHD.BYO_PO.MVNDR_NBR
  87. INNER JOIN RQST_TYPE RT ON TRIM(SUBSTR(BP.PO_CMT_TXT, 6, 11)) = RT.RQST_ID
  88. ) A
  89. )
  90. Select P.RQST_ID,
  91. P.DSVC_TYP_CD,
  92. CE
  93. WHEN P.DSVC_TYP_CD = 1 THEN 'DTS'
  94. WHEN P.DSVC_TYP_CD = 2 THEN 'RDC AGG'
  95. WHEN P.DSVC_TYP_CD = 3 THEN 'RDCX'
  96. END DSVC_TYP_DESC,
  97. CE
  98. WHEN P.DSVC_TYP_CD = 2
  99. AND S.STR_NBR IS NOT NULL THEN 'Y'
  100. ELSE 'N'
  101. END RDC_AGG_PEG_FLG,
  102. CE
  103. WHEN P.DSVC_TYP_CD = 2
  104. AND S.STR_NBR IS NOT NULL THEN P.ORD_REF_NBR
  105. ELSE P.PO
  106. END PO_NBR,
  107. P.BYO_NBR,
  108. P.PO_CTRL_NBR,
  109. P.CRT_DT,
  110. P.HOST_TYPE,
  111. P.MVNDR_NBR,
  112. P.MVNDR_NM,
  113. CE
  114. WHEN P.DSVC_TYP_CD = 2
  115. AND S.STR_NBR IS NOT NULL THEN AR.MKT_DC_NBR
  116. ELSE P.MKT_DC_NBR
  117. END MKT_DC_NBR,
  118. P.LOC_NBR,
  119. COALESCE(SKU.MER_DEPT_NBR || '-' || D.SHRT_DEPT_NM, '') DEPT,
  120. COALESCE(
  121. SKU.MER_CLS_NBR || '-' || MC.SHRT_CLS_DESC,
  122. ''
  123. ) CLS,
  124. COALESCE(
  125. SKU.MER_SUB_CLS_NBR || '-' || MSC.SHRT_SUBCLS_DESC,
  126. ''
  127. ) SUB_CLS,
  128. P.SKU_NBR,
  129. P.ORD_QTY,
  130. COALESCE(
  131. SD.AVG_DC_LCOST_AMT * COALESCE(P.ORD_QTY, 0),
  132. MSM.CURR_COST_AMT * COALESCE(P.ORD_QTY, 0)
  133. ) TOTAL_COST,
  134. SD.AVG_DC_LCOST_AMT SD_COST,
  135. MSM.CURR_COST_AMT STR_CURR_COST,
  136. MSD.CURR_COST_AMT DC_CURR_COST,
  137. P.PO_CMT_TXT,
  138. P.RSN_CD
  139. FROM PO_DETAILS P --SKU HIERARCHY INFO
  140. LEFT JOIN PRTHD.SKU SKU ON SKU.SKU_NBR = P.SKU_NBR
  141. LEFT JOIN PRTHD.DEPT D ON SKU.MER_DEPT_NBR = D.DEPT_NBR
  142. LEFT JOIN PRTHD.MER_CLS MC ON MC.MER_DEPT_NBR = SKU.MER_DEPT_NBR
  143. AND MC.MER_CLS_NBR = SKU.MER_CLS_NBR
  144. LEFT JOIN PRTHD.MER_SUB_CLS MSC ON MSC.MER_DEPT_NBR = SKU.MER_DEPT_NBR
  145. AND MSC.MER_CLS_NBR = SKU.MER_CLS_NBR
  146. AND MSC.MER_SUB_CLS_NBR = SKU.MER_SUB_CLS_NBR
  147. LEFT JOIN PRTHD.MVNDR_SKU_DC MSD ON MSD.MVNDR_NBR = P.MVNDR_NBR
  148. AND MSD.SKU_NBR = P.SKU_NBR
  149. AND MSD.DC_NBR = P.LOC_NBR
  150. LEFT JOIN PRTHD.STR S ON S.STR_NBR = P.LOC_NBR
  151. LEFT JOIN PRTHD.SKU_DC SD ON SD.DC_NBR = P.MKT_DC_NBR
  152. AND SD.SKU_NBR = P.SKU_NBR
  153. LEFT JOIN PRTHD.MVNDR_SKU_MKT MSM ON MSM.MVNDR_NBR = P.MVNDR_NBR
  154. AND MSM.SKU_NBR = P.SKU_NBR
  155. AND MSM.MKT_NBR = S.MKT_NBR
  156. LEFT JOIN PRTHD.AGG_RQST AR ON AR.PO_NBR = P.ORD_REF_NBR
  157. AND P.MVNDR_NBR = AR.MVNDR_NBR
  158. AND SKU.MER_DEPT_NBR = AR.MER_DEPT_NBR
  159. AND AR.ORD_DT >= P.CRT_DT
展开查看全部

相关问题