2016-06-24 10 views
0

Ich versuche, mein Lieferdatum in verschiedene Komponenten aufzuteilen, damit ich es so abfragen kann, wie ich es brauche. Ich verwende den folgenden Code in meiner Oracle-Abfrage:Tag des Monats von DateField in Oracle

EXTRACT (DAY FROM "AR_TRX_HEADER"."SHIPDATETIME") AS DofM, 
EXTRACT (YEAR FROM(ADD_MONTHS ("AR_TRX_HEADER"."SHIPDATETIME", 1))) AS FY, 

ich das Jahr in Ordnung bin ziehen, aber ich erhalte eine Fehlermeldung jedes Mal, wenn ich versuche, den Tag zu ziehen. Es sagt mir, dass mir eine rechte Klammer fehlt. Irgendwelche Ideen?

Jede Hilfe wäre willkommen. Vielen Dank!

Hier ist die gesamte Abfrage (Sie werden in dieser Abfrage sehen, dass ich das DayOfMonth als Zeichenfeld gezogen habe - ich schreibe es jetzt um und versuche, es als eine Zahl zu bekommen. Ich habe gerade den Extrahierungsmonat geändert dass und es funktioniert gut ich auf dem Quartal neben arbeiten werde.):.

SELECT 
     "AR_PRODUCT_VIEW"."CUSTID" || ' - ' || "AR_PRODUCT_VIEW"."CUSTNAME" AS Customer, 
     "AR_PRODUCT_VIEW"."PRODUCTID" || ' - ' || "AR_PRODUCT_VIEW"."PRODUCTDESCR" AS Product, 
     SUM("AR_PRODUCT_VIEW"."QNT1") AS Gallons, 
     TO_CHAR("AR_TRX_HEADER"."SHIPDATETIME",'MON') AS MonthName, 
     TO_CHAR("AR_TRX_HEADER"."SHIPDATETIME",'DD') AS DayOfMonth, 
     EXTRACT (YEAR FROM(ADD_MONTHS ("AR_TRX_HEADER"."SHIPDATETIME", 1))) AS FY, 
     EXTRACT (MONTH FROM(ADD_MONTHS ("AR_TRX_HEADER"."SHIPDATETIME", 1))) AS FM, 
     TO_CHAR(ADD_MONTHS ("AR_TRX_HEADER"."SHIPDATETIME",1),'Q') AS FQ, 
floor(
    (
    trunc("AR_TRX_HEADER"."SHIPDATETIME") - 
    case 
    -- if December is current month, than use 1st of this month 
    when to_char("AR_TRX_HEADER"."SHIPDATETIME", 'MM') = 12 then trunc("AR_TRX_HEADER"."SHIPDATETIME", 'MM') 
    -- else, use 1st December of previous year 
    else add_months(trunc("AR_TRX_HEADER"."SHIPDATETIME", 'YYYY'), -1) 
    end 
)/7 
) + 1 
AS FW, 
     "FC_NAME"."LASTCONAME" AS SalesPerson , 
     "AR_PRODUCT_VIEW"."SONO" AS InvoiceNumber, 
     TO_CHAR("AR_TRX_HEADER"."SHIPDATETIME",'mm/dd/yyyy') AS InvoiceDate, 
     "AR_PRODUCT_VIEW"."COMMODITY" AS ProductCategory 
    FROM "AR_PRODUCT_VIEW", 
     "AR_TRX_LINE", 
     "AR_TRX_HEADER", 
     "AR_CUST", 
     "FC_NAME" 
    WHERE ("AR_TRX_LINE"."ARTRXHDRIDX" = "AR_TRX_HEADER"."ARTRXHDRIDX") and 
     ("AR_PRODUCT_VIEW"."ARTRXLINESEQ" = "AR_TRX_LINE"."ARTRXLINESEQ") and 
     ("AR_PRODUCT_VIEW"."ARTRXHDRIDX" = "AR_TRX_LINE"."ARTRXHDRIDX") and 
     ("AR_PRODUCT_VIEW"."ARTRXLINETRXTYPE" = "AR_TRX_LINE"."ARTRXLINETRXTYPE") and 
     ("AR_PRODUCT_VIEW"."CUSTNAMEIDX" = "AR_CUST"."CUSTNAMEIDX") and 
     ("AR_CUST"."SALESPERSONNAMEIDX" = "FC_NAME"."NAMEIDX") 
GROUP BY "AR_PRODUCT_VIEW"."PRODUCTDESCR", 
     "AR_PRODUCT_VIEW"."CUSTNAME", 
     "AR_PRODUCT_VIEW"."PRODUCTID", 
     "AR_PRODUCT_VIEW"."CUSTID", 
     "AR_PRODUCT_VIEW"."COMMODITY", 
     "AR_PRODUCT_VIEW"."PSSIZE", 
     "AR_PRODUCT_VIEW"."UOM", 
     "AR_PRODUCT_VIEW"."QNTTITLE", 
     "AR_PRODUCT_VIEW"."AMTTITLE", 
     "AR_PRODUCT_VIEW"."SONO", 
     "AR_TRX_HEADER"."SHIPDATETIME", 
     "AR_TRX_HEADER"."SODATETIME", 
     "AR_PRODUCT_VIEW"."SALESPERSON", 
     "FC_NAME"."LASTCONAME" 
ORDER BY "AR_TRX_HEADER"."SHIPDATETIME" ASC, 
     "AR_PRODUCT_VIEW"."SONO" ASC 
+2

Bitte bearbeiten Sie Ihre Frage und fügen Sie die gesamte Abfrage ein. Vielen Dank. –

+0

Können Sie diese zwei Datumsauswahlspalte entfernen und die Abfrage ausführen. – Prathyush

+0

Es tut mir leid, ich verstehe nicht, was Sie tun sollen. – Jeff

Antwort

0

um zu testen, chk mit folgenden Abfrage

select EXTRACT (DAY FROM to_date('24-june-2016')) AS DOFM ,TO_CHAR(to_date('24-june-2016'), 'Day') from dual; 

und dann versuchen, mit Ihrer Anfrage

select EXTRACT (DAY FROM "AR_TRX_HEADER"."SHIPDATETIME") AS DofM from your_table; 

Hinweis: - "AR_TRX_HEADER". "SHIPDATETIME" sollte Datumstyp sein, andernfalls müssen Sie in Datumstyp konvertieren.

0

Ich konnte das funktioniert. Es ist wahrscheinlich nicht der effizienteste Weg, um es zu erledigen, aber es funktioniert und es gibt mir, was ich brauche. Vielen Dank für die Eingabe. Es ist immer hilfreich, anderen etwas zu erklären. Es lässt dich mehr selbst durchdenken.

SELECT 
     "AR_PRODUCT_VIEW"."CUSTID" || ' - ' || "AR_PRODUCT_VIEW"."CUSTNAME" AS Customer, 
     "AR_PRODUCT_VIEW"."PRODUCTID" || ' - ' || "AR_PRODUCT_VIEW"."PRODUCTDESCR" AS Product, 
     SUM("AR_PRODUCT_VIEW"."QNT1") AS Gallons, 
     TO_CHAR("AR_TRX_HEADER"."SHIPDATETIME",'MON') AS MonthName, 
     TO_NUMBER(TO_CHAR("AR_TRX_HEADER"."SHIPDATETIME",'DD')) AS DayOfMonth, 
     EXTRACT (YEAR FROM(ADD_MONTHS ("AR_TRX_HEADER"."SHIPDATETIME", 1))) AS FY, 
     EXTRACT (MONTH FROM(ADD_MONTHS ("AR_TRX_HEADER"."SHIPDATETIME", 1))) AS FM, 
     TO_NUMBER(TO_CHAR(ADD_MONTHS ("AR_TRX_HEADER"."SHIPDATETIME",1),'Q')) AS FQ, 
floor(
    (
    trunc("AR_TRX_HEADER"."SHIPDATETIME") - 
    case 
    -- if December is current month, than use 1st of this month 
    when to_char("AR_TRX_HEADER"."SHIPDATETIME", 'MM') = 12 then trunc("AR_TRX_HEADER"."SHIPDATETIME", 'MM') 
    -- else, use 1st December of previous year 
    else add_months(trunc("AR_TRX_HEADER"."SHIPDATETIME", 'YYYY'), -1) 
    end 
)/7 
) + 1 
AS FW, 
     "FC_NAME"."LASTCONAME" AS SalesPerson , 
     TO_NUMBER("AR_PRODUCT_VIEW"."SONO") AS InvoiceNumber, 
     TO_CHAR("AR_TRX_HEADER"."SHIPDATETIME",'mm/dd/yyyy') AS InvoiceDate, 
     "AR_PRODUCT_VIEW"."COMMODITY" AS ProductCategory 
    FROM "AR_PRODUCT_VIEW", 
     "AR_TRX_LINE", 
     "AR_TRX_HEADER", 
     "AR_CUST", 
     "FC_NAME" 
    WHERE ("AR_TRX_LINE"."ARTRXHDRIDX" = "AR_TRX_HEADER"."ARTRXHDRIDX") and 
     ("AR_PRODUCT_VIEW"."ARTRXLINESEQ" = "AR_TRX_LINE"."ARTRXLINESEQ") and 
     ("AR_PRODUCT_VIEW"."ARTRXHDRIDX" = "AR_TRX_LINE"."ARTRXHDRIDX") and 
     ("AR_PRODUCT_VIEW"."ARTRXLINETRXTYPE" = "AR_TRX_LINE"."ARTRXLINETRXTYPE") and 
     ("AR_PRODUCT_VIEW"."CUSTNAMEIDX" = "AR_CUST"."CUSTNAMEIDX") and 
     ("AR_CUST"."SALESPERSONNAMEIDX" = "FC_NAME"."NAMEIDX") 
GROUP BY "AR_PRODUCT_VIEW"."PRODUCTDESCR", 
     "AR_PRODUCT_VIEW"."CUSTNAME", 
     "AR_PRODUCT_VIEW"."PRODUCTID", 
     "AR_PRODUCT_VIEW"."CUSTID", 
     "AR_PRODUCT_VIEW"."COMMODITY", 
     "AR_PRODUCT_VIEW"."PSSIZE", 
     "AR_PRODUCT_VIEW"."UOM", 
     "AR_PRODUCT_VIEW"."QNTTITLE", 
     "AR_PRODUCT_VIEW"."AMTTITLE", 
     "AR_PRODUCT_VIEW"."SONO", 
     "AR_TRX_HEADER"."SHIPDATETIME", 
     "AR_TRX_HEADER"."SODATETIME", 
     "AR_PRODUCT_VIEW"."SALESPERSON", 
     "FC_NAME"."LASTCONAME" 
ORDER BY "AR_TRX_HEADER"."SHIPDATETIME" ASC, 
     "AR_PRODUCT_VIEW"."SONO" ASC 
Verwandte Themen