【问题标题】:nested if-statement [closed]嵌套的 if 语句
【发布时间】:2012-06-01 21:58:34
【问题描述】:

我不知道 SQL 也不知道嵌套语句。请根据我的条件和下面的 SQL 向我提供完整的 SQL 以复制并粘贴到我的 Access 查询中。 非常感谢你,纳撒尼尔

标准

  1. if [POsoI].[PO_number]is like "*H", THEN [o].[SERVICE ID] must be equal to "HEAT TREAT"

  2. IF [POsoI].[PO_number] is like "*C", THEN [o].[SERVICE ID] must be equal to "COATING" or equal to "ZINC PLATING"

  3. IF [POsoI].[PO_number] is like "*G", THEN [o].[SERVICE ID] must be equal to "GRINDING"

  4. IF [POsoI].[.[PO_number] isnt like "*H" or like "*C" or like "*G", then [o].[SERVICE ID] must not be null and can not be equal to "HEAT TREAT" and can not be equal to "COATING" and can not be equal to"ZINC PLATING" and can not be equal to "GRINDING"

    SELECT DISTINCT o.SERVICE_ID FROM tbl_PO_service_order_input AS POsoI INNER JOIN SYSADM_OPERATION AS o ON (o.WORKORDER_LOT_ID = POsoI.WO_lot_ID) AND (POsoI.wo_Base_ID = o.WORKORDER_BASE_ID);

【问题讨论】:

  • @Michael Petrotta:很棒的评论 :-)
  • 感谢您的建议,但很遗憾,我没有 21 天的时间来学习。
  • 不需要 21 天,这些标准是基本条件

标签: ms-access


【解决方案1】:
SELECT DISTINCT IIf(RIGHT(TBL_PO_SERVICE_ORDER_INPUT.PO_NUMBER,1)='H' And SYSADM_OPERATION.SERVICE_ID='HEAT TREAT',SYSADM_OPERATION.SERVICE_ID,IIf(RIGHT(TBL_PO_SERVICE_ORDER_INPUT.PO_NUMBER,1)='C' And SYSADM_OPERATION.SERVICE_ID='CLOTHING' Or SYSADM_OPERATION.SERVICE_ID='ZINC PLATING',SYSADM_OPERATION.SERVICE_ID,IIf(RIGHT(TBL_PO_SERVICE_ORDER_INPUT.PO_NUMBER,1)='G' And SYSADM_OPERATION.SERVICE_ID='GRINDING',SYSADM_OPERATION.SERVICE_ID,IIf(RIGHT(TBL_PO_SERVICE_ORDER_INPUT.PO_NUMBER,1)<>'G' Or RIGHT(TBL_PO_SERVICE_ORDER_INPUT.PO_NUMBER,1)<>'H' Or RIGHT(TBL_PO_SERVICE_ORDER_INPUT.PO_NUMBER,1)<>'C' And SYSADM_OPERATION.SERVICE_ID Is Not Null,SYSADM_OPERATION.SERVICE_ID,
IIf(SYSADM_OPERATION.SERVICE_ID<>'HEAT TREAT' And SYSADM_OPERATION.SERVICE_ID<>'COATING' And SYSADM_OPERATION.SERVICE_ID<>'ZINC PLATING' And SYSADM_OPERATION.SERVICE_ID<>'GRINDING',SYSADM_OPERATION.SERVICE_ID)))))
FROM SYSADM_OPERATION INNER JOIN TBL_PO_SERVICE_ORDER_INPUT ON ([TBL_PO_SERVICE_ORDER_INPUT].WO_LOT_ID=[SYSADM_OPERATION].WORKORDER_LOT_ID) AND ([TBL_PO_SERVICE_ORDER_INPUT].WO_BASE_ID=[SYSADM_OPERATION].WORKORDER_BASE_ID);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多