在预期条件的上下文中指定的非布尔类型的表达式,靠近 IDT 中的“)”错误

Posted

技术标签:

【中文标题】在预期条件的上下文中指定的非布尔类型的表达式,靠近 IDT 中的“)”错误【英文标题】:An expression of non-boolean type specified in a context where a condition is expected, near ')' error in IDT 【发布时间】:2017-08-01 09:32:41 【问题描述】:

在运行以下代码时,我收到错误提示

在预期条件的上下文中指定的非布尔类型表达式,靠近 ')'。

SELECT
      OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.LNG_CODE,
      OVUTCMN.TNT_DIM.TNT_KEY,
      OVUTCMN.TNT_DIM.TNT_CODE,
      OVUTCMN.DATE_DIM.YY_NBR,
      OVUTCMN.DATE_DIM.QTR_NBR,
      'Q'+ CAST(OVUTCMN.DATE_DIM.QTR_NBR AS VARCHAR(10)) AS QTR_DESC,
      OVUTCMN.DATE_DIM_TXT.MM_NBR,
      OVUTCMN.DATE_DIM_TXT.MM_SHORT_DESC,
      OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.STD_ZONE_CODE,
      OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.STD_ZONE_NAME,
      OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.STD_SUBDVSN_CODE,
      OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.STD_SUBDVSN_NAME,
      OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.STD_UNIT_CODE,
      OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.STD_UNIT_NAME,
      OVUTCMN.FALRE_TYPE_UE_DIM_TXT.FALRE_CTGRY_CODE,
      OVUTCMN.FALRE_TYPE_UE_DIM_TXT.FALRE_CTGRY_DESC,
      OVUTCMN.FALRE_TYPE_UE_DIM_TXT.STD_FALRE_TYPE_DESC,
      OVUTCMN.FALRE_TYPE_UE_DIM_TXT.FR_CODE,
      OVUTOI.OTG_STP_UE_F.INCDT_KEY,
      OVUTOI.OTG_STP_UE_F.SRC_TYPE
    FROM
      OVUTCMN.FALRE_TYPE_UE_DIM_TXT INNER JOIN OVUTCMN.FALRE_TYPE_UE_DIM ON (OVUTCMN.FALRE_TYPE_UE_DIM_TXT.FALRE_TYPE_KEY=OVUTCMN.FALRE_TYPE_UE_DIM.FALRE_TYPE_KEY)
       INNER JOIN OVUTOI.OTG_STP_UE_F ON (OVUTCMN.FALRE_TYPE_UE_DIM.FALRE_TYPE_KEY=OVUTOI.OTG_STP_UE_F.OUTAGE_KEY)
       INNER JOIN OVUTCMN.TNT_DIM ON (OVUTOI.OTG_STP_UE_F.TNT_KEY=OVUTCMN.TNT_DIM.TNT_KEY)
       INNER JOIN OVUTCMN.FNCNL_LCTN_UE_DIM_TXT ON (OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.FNCNL_LCTN_KEY=OVUTOI.OTG_STP_UE_F.FNCNL_LCTN_KEY  AND  OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.LNG_CODE = 'en_US')
       INNER JOIN OVUTCMN.DATE_DIM ON (OVUTCMN.DATE_DIM.DATE_KEY=OVUTOI.OTG_STP_UE_F.PWR_RSTR_START_DATE_KEY)
       INNER JOIN OVUTCMN.DATE_DIM_TXT ON (OVUTCMN.DATE_DIM.DATE_KEY=OVUTCMN.DATE_DIM_TXT.DATE_KEY  AND  OVUTCMN.DATE_DIM_TXT.DATE_KEY)

    WHERE
      (OVUTCMN.FALRE_TYPE_UE_DIM_TXT.LNG_CODE='en_US' AND OVUTCMN.FALRE_TYPE_UE_DIM_TXT.FALRE_CTGRY_CODE<>9 
    AND OVUTCMN.DATE_DIM.YY_NBR BETWEEN DATEPART(YYYY,DATEADD(YYYY,-2,GETDATE())) and DATEPART(YYYY,GETDATE())  )

    GROUP BY 

     OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.LNG_CODE,
      OVUTCMN.TNT_DIM.TNT_KEY,
      OVUTCMN.TNT_DIM.TNT_CODE,
      OVUTCMN.DATE_DIM.YY_NBR,
      OVUTCMN.DATE_DIM.QTR_NBR,
      OVUTCMN.DATE_DIM_TXT.MM_NBR,
      OVUTCMN.DATE_DIM_TXT.MM_SHORT_DESC,
      OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.STD_ZONE_CODE,
      OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.STD_ZONE_NAME,
      OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.STD_SUBDVSN_CODE,
      OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.STD_SUBDVSN_NAME,
      OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.STD_UNIT_CODE,
      OVUTCMN.FNCNL_LCTN_UE_DIM_TXT.STD_UNIT_NAME,
      OVUTCMN.FALRE_TYPE_UE_DIM_TXT.FALRE_CTGRY_CODE,
      OVUTCMN.FALRE_TYPE_UE_DIM_TXT.FALRE_CTGRY_DESC,
      OVUTCMN.FALRE_TYPE_UE_DIM_TXT.STD_FALRE_TYPE_DESC,
      OVUTCMN.FALRE_TYPE_UE_DIM_TXT.FR_CODE,
      OVUTOI.OTG_STP_UE_F.INCDT_KEY,
      OVUTOI.OTG_STP_UE_F.SRC_TYPE

HAVING max(coalesce(B.SRC_PWR_RSTR_DURTN,0))>=0

【问题讨论】:

我已经根据查询的语法和错误消息添加了 SQL Server 标记。在您以后的问题中,请包括相关的 rdbms 标签以及具体的版本标签。 【参考方案1】:

问题出在你的最后一个ON 子句中:

INNER JOIN OVUTCMN.DATE_DIM_TXT ON 
(
    OVUTCMN.DATE_DIM.DATE_KEY = OVUTCMN.DATE_DIM_TXT.DATE_KEY  
    AND OVUTCMN.DATE_DIM_TXT.DATE_KEY
)

【讨论】:

Glad to help :-)

以上是关于在预期条件的上下文中指定的非布尔类型的表达式,靠近 IDT 中的“)”错误的主要内容,如果未能解决你的问题,请参考以下文章

SQL MERGE:在预期条件的上下文中指定的非布尔类型的表达式,靠近“,”

SQL Server - 在“返回”附近的预期条件的上下文中指定的非布尔类型的表达式

错误:在预期条件的上下文中指定的非布尔类型的表达式

SQL 用户定义函数生成非布尔类型错误

以位为条件的 SQL

未经处理的异常在 System.Data.dll 中发生。其它信息:在应使用条件的上下文(在 &#39;***&#39; 附近)中指定了非布尔类型的表达式。