SQL查询有问题吗?

Kal*_*oli 0 sql oracle

在蟾蜍我试图提取数据,但当我把条件之间的数据输出错误....请让我知道如果我错过了什么....请帮助...

SELECT B.USER_NAME AS CREATED_BY
    ,A.CREATION_DATE
    ,C.USER_NAME
    ,A.LAST_UPDATE_DATE
    ,A.PFIZER_ITEMCODE
    ,A.SYSTEM_ITEMCODE AS ORACLE_ITEM_CODE
    ,A.ITEM_DESCRIPTION
    ,A.BATCH_NUMBER
    ,A.MFR_CODE
    ,A.MFR_DESC AS MFR_DESCRIPTION
    ,TO_CHAR(A.MFR_DATE, 'DD-MON-YYYY') AS MFR_DATE
    ,TO_CHAR(A.EXPIRY_DATE, 'DD-MON-YYYY') AS EXPIRY_DATE
    ,TO_CHAR(A.EFFECTIVE_FROM, 'DD-MON-YYYY') AS EFFECTIVE_FROM
    ,A.EFFECTIVE_TO
    ,A.EXCISE AS EXCISE_AMOUNT
    ,A.EXCISE_RATE
    ,A.P2S
    ,A.P2R
    ,A.MRP
    ,A.STATE_CODE
    ,A.STATE
    ,(CASE SUBSTR(A.SYSTEM_ITEMCODE, 6, 2)
            WHEN ('PI')
                THEN 'OIP'
            WHEN ('PF')
                THEN 'OPF'
            ELSE 'OWL'
            END
        ) AS LEGAL_ENTITY
FROM xxdhl_pf_batch_pricing A
    ,fnd_user B
    ,fnd_user c
WHERE 1 = 1
    AND A.CREATED_BY = B.USER_ID
    AND A.LAST_UPDATED_BY = C.USER_ID
    AND TO_CHAR(A.CREATION_DATE, 'DD-Mon-YYYY') BETWEEN '01-Jan-2015'
        AND '08-Jan-2015'
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

您应该修复连接语法和格式.简单规则:不要在FROM子句中使用逗号. 始终使用显式JOIN语法.

但你的问题可能就是约会.将日期比较作为日期而不是字符串:

TRUNC(A.CREATION_DATE) BETWEEN DATE '2015-01-01' and DATE '2015-01-08'
Run Code Online (Sandbox Code Playgroud)

DATE关键字是非常方便的,因为这样你可以把日期常量在ISO标准的YYYY-MM-DD格式.

  • @KalpeshKoli:使用`TO_DATE(date_string,'DD-MON-YYYY')`. (2认同)
  • 您需要更改与日期相关的WHERE子句的整个部分,以便在任何地方使用DATE值.将WHERE子句的最后一行更改为'AND TRUNC(A.CREATION_DATE)BETWEEN TO_DATE('01 -JAN-2015','DD-MON-YYYY')和TO_DATE('08 -JAN-2015','DD- MON-YYYY')`.祝你好运. (2认同)