Converting Crystal Date Group to SQL Command

When selecting the option to group on the server, I found that there are requirements in addition to selecting the option.
I have a date grouping in Crystal like the following:
dateadd("d", - weekday({table.date}, crMonday)+1,{table.date})
Can this be converted to a SQL command?

Hi Mark,
Jyothi had given  an excellent query for you,  Congrats Jyothy!!
But she didnt mantioned 'From clouse' on that.
Let me correct that query with an example,
My TableName: Invoice
Primary Key: InvoicePID
Date field:InvoiceDate
Here the query will be
select InvoicePID,  Dateadd(d,-(CASE  WHEN DATEName(dw,Invoice.InvoiceDate ) = 'Monday' THEN 1
                        WHEN DATEName(dw,Invoice.InvoiceDate ) = 'Tuesday' THEN 2     
                         WHEN DATEName(dw,Invoice.InvoiceDate ) = 'Wednesday' THEN 3
                         WHEN DATEName(dw,Invoice.InvoiceDate ) = 'Thursday' THEN 4
                         WHEN DATEName(dw,Invoice.InvoiceDate ) = 'Friday' THEN 5
                         WHEN DATEName(dw,Invoice.InvoiceDate ) = 'Saturday' THEN 6
                         WHEN DATEName(dw,Invoice.InvoiceDate ) = 'Sunday' THEN 7
END
)+1 ,Invoice.InvoiceDate)
from Invoice
You can change the tablename and field with respect to your DB.
regards,
Salah.

Similar Messages

  • Optional Date parameters in SQL Command

    I'm using Crystal Reports 2008. I want to make the start and end date parameters optional and have them default to the beginning and end of the previous month. Unfortunately, I'm using an SQL Command, rather than filtering in the Record Selection Formula, and I can't see any way to pass the computed start and end dates into the query. Is there any way to get the results I want short of omitting the date parameter in the query and doing all the filtering on the front end? Thanks.

    The way I have gotten around this problem is to make the date parameters strings, and allow mnemonics such as PM for prior month, PD for prior day, PQ for prior quarter, etc.  I then wrote Crystal and database functions that convert these mnemonics to actual dates, which are then used where necessary.  This is also useful for scheduling the same report to run weekly (for the prior week), monthly (for the prior month) and quarterly (for the prior quarter)...
    Also, remember that an SQL command in Crystal is basically the equivalent of a stored procedure, so you can do a lot of logic in them before returning your data set.  So, in your SQL, you could set a variable to either the parameter value or a calculated prior month dependent on if the date parameter is null (assuming Crystal allows no entry for the parameter, which I think 2008 does [I'm on XI R2]).
    HTH,
    Carl

  • Crystal Reports for Enterprise - SQL Command - Array Fetch Size

    We're attempting to migrate a report created in Crystal Reports 2013 Support Pack 3  Version 14.1.3.1257 to...
    Crystal Reports for Enterprise Version 14.1.3.1300 Build: 2013 Support Pack 3 Patch 1
    The originating report is successfully connecting and returning data from MySQL through the MySQL ODBC 3.51 Driver (3.51.30.00), using a SQL Command
    When opening up this report in CR for E and running the report against the same database and the same version of database driver, we get the following Crystal Reports error:
    Crystal Reports
    A problem was encountered
    The following error has occurred while trying to retrieve the data:
    Error on Fetch : Largevarchar and Largevarbinary data cannot retrieved as variable-length data if the array fetch size is not set to 1.
    Please check with your System Administrator that the data source is correctly configured.
    How would we check and where would we adjust the array fetch size within Crystal Report for Enterprise?
    Thank you

    Hi Vitaly,
    I had not yet tried creating a new report based on the query, within CR for E, but I did now upon your request\suggestion.  Yes, it fails as well with a brand new report..same new error as above: "Non Supported Datatype"
    I've pasted the SQL we are using below.  I just tried running this exact query natively through MyPHPAdmin, and also creating a brand new report with Crystal Reports 2013 against the same ODBC driver that I am trying to use within CR for E.  In both cases the query was accepted and ran successfully.
    Driver info:
    MySQL ODBC 3.51 Driver -  Version 3.51.30.00
    I have also tried 2 newer versions of the driver:
    MySQL ODBC 5.3 ANSI - Version 5.03.02.00
    MySQL ODBC 5.3 Unicode - Version 5.03.02.00
    ...where I also configure each within the Information Design Tool so that the "Array Fetch Size"=  1
    I receive the same "Non Supported Datatype" error for these drivers as well.  The MySQL server version is:  5.1.73-0ubuntu0.10.04.1-log
    Protocol Version: 10
    MySQL charset:  UTF-8
    Here is the query:
    SELECT ft.seq_id, ft.ticket_date, ft.posttotal,
    wl.name as current_approval_level,
    TIMESTAMPDIFF(DAY,ft.ticket_date,NOW()) AS Days_Since_TicketDate,
    TIMESTAMPDIFF(DAY,ft.date_created,NOW()) AS Days_Since_Created,
    TIMESTAMPDIFF(DAY,wph.workflow_date,NOW()) AS Days_Waiting_Your_Approval,
    ft.internal_comments
    FROM ticket AS ft
    LEFT JOIN unit AS unit ON (ft.unit_id = unit.id)
    LEFT JOIN unit_district AS udist ON (udist.unit_id = unit.id AND (udist.effective_date IS NULL OR udist.effective_date = 0 OR udist.effective_date <= ft.ticket_date)
           AND (udist.expiry_date IS NULL OR udist.expiry_date = 0 OR udist.expiry_date >= ft.ticket_date))
    LEFT JOIN workflow_document_process_map AS wdpm ON (ft.id = wdpm.document_id AND wdpm.document_type_id = 1)
    LEFT JOIN workflow_process AS wp ON (wp.id = wdpm.workflow_process_id)
    LEFT JOIN workflow_rule AS wr ON (wp.workflow_schema_id = wr.workflow_schema_id AND wp.workflow_level_id = wr.workflow_level_id AND wr.workflow_activity_id = 2  AND (wr.effective_date IS NULL OR wr.effective_date = 0 OR wr.effective_date <= ft.ticket_date) AND (wr.expiry_date IS NULL OR wr.expiry_date = 0 OR wr.expiry_date >= ft.ticket_date))
    LEFT JOIN workflow_rule AS wr2 ON (wp.workflow_schema_id = wr2.workflow_schema_id AND wp.workflow_level_id = wr2.workflow_level_id AND wr2.workflow_activity_id = 4 AND (wr2.effective_date IS NULL OR wr2.effective_date = 0 OR wr2.effective_date <= ft.ticket_date) AND (wr2.expiry_date IS NULL OR wr2.expiry_date = 0 OR wr2.expiry_date >= ft.ticket_date))
    LEFT JOIN workflow_process_history AS wph ON (wph.workflow_process_id = wp.id)
    LEFT JOIN ticket_attachment AS ftattach ON (ft.id = ftattach.ticket_id AND ftattach.attachment_type_id = 2)
    LEFT JOIN person AS p ON (ft.supervisor_id = p.id)
    LEFT JOIN person AS p2 ON (ft.head_office_contact_id = p2.id AND (p2.effective_date IS NULL OR p2.effective_date = 0 OR p2.effective_date <= ft.ticket_date)
           AND (p2.expiry_date IS NULL OR p2.expiry_date = 0 OR p2.expiry_date >= ft.ticket_date))
    LEFT JOIN person AS p3 ON (ft.sales_person_id = p3.id)
    LEFT JOIN person_company_sales AS pcs ON (p2.id = pcs.client_person_id AND pcs.company_id = ft.client_company_id)
    LEFT JOIN person AS p4 ON (ft.created_by = p4.id)
    LEFT JOIN person AS p5 ON (ft.well_site_supervisor_id = p5.id)
    LEFT JOIN division AS d ON (ft.division_id = d.id)
    LEFT JOIN district AS dist1 ON (ft.district_id = dist1.id)
    LEFT JOIN district AS dist2 ON (udist.district_id = dist2.id)
    LEFT JOIN company AS c ON (ft.client_company_id = c.id)
    LEFT JOIN province AS prov ON (ft.job_province_id = prov.id)
    LEFT JOIN ticket_attachment AS ftattach2 ON (ft.id = ftattach2.ticket_id AND ftattach2.attachment_type_id != 2)
    LEFT JOIN locale_currency AS lc ON (lc.id = ft.locale_currency_id)
    LEFT JOIN operation_type AS ot ON (ot.id = ft.operation_type_id)
    LEFT JOIN incident AS i ON (i.ticket_id = ft.id)
    LEFT JOIN invoice_type AS it ON (it.id = ft.invoice_type_id)
    LEFT JOIN workflow_level AS wl ON (wl.id = wp.workflow_level_id)
    LEFT JOIN company AS dist1_company ON (dist1_company.id = dist1.internal_company_id)
    WHERE 1
    AND ( pcs.sales_person_id = 2113 AND pcs.effective_date <= ft.ticket_date AND ( pcs.expiry_date >= ft.ticket_date OR pcs.expiry_date = '0000-00-00 00:00:00' OR pcs.expiry_date IS NULL) )
    AND ft.closed_flag <> 1 AND (wr2.id IS NOT NULL OR wr2.id != 0)
    AND ft.commit_flag = 1
    AND ft.dispatch_status = 0
    AND dist1_company.country_id = 1
    AND wr2.role_id = 2
    GROUP BY ft.id
    ORDER BY ticket_date ASC, ft.id ASC
    Thanks you for your help.

  • How to convert String date to java sql date

    I have an html form for entering the Date on retreving that value in a java servlet i get it as a string i want to convert that date to SQL date format so that i could use setDate() method of the java.sql.Date class to update the date value in the database.
    i used the following way but i need the code without using the deprecated ones.
    String delDate = (String)p_Request.getParameter("deleteDate");
    [b]java.util.Date utilDate = new java.util.Date(delDate);
    java.sql.Date deleteDate = new java.sql.Date(utilDate.getTime());
    custCode = (String)p_Request.getValue("custCode");
    thanx in advance.

    Check out the later posts in http://forum.java.sun.com/thread.jspa?threadID=647681&messageID=3814745#3814745

  • Problem in converting util date format to sql date format

    im trying to convert util date to sql date...i'm getting the error msg as
    Error is : java.lang.NullPointerException
    Error Message : null
    i'm not bale to track the result...whatz the problem with this code?
    This fromDate value will be dynamically built, value will be
    fromDate="Tue Jul 15 00:00:00 IST 2003";
    java.util.Date xx=util.stringToDate(fromDate);
    java.sql.Date sqlD=null;
    sqlD.setTime(xx.getTime());
    System.out.println("sqld"+sqlD);

    I try this and it works:
    SimpleDateFormat simpledateformat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.UK);
    String s = "Tue Jul 15 00:00:00 IST 2003";
    java.util.Date date = simpledateformat.parse(s);
    java.sql.Date sqlD=new java.sql.Date(date.getTime());
    System.out.println("sqld"+sqlD);
    Hope this helps.

  • Data Conversion or Sql Command

    We are importing mdb data to SQL Server and require data type casting. Which is better to use and gives better performance?
    - Data Conversion
    - SQL Command (with casting)
    Thanks,
    Darren

    Using the sql cast will give you a performance benefit over using the data conversion transformation.  We should probably shelve the transformation unless if we are in a situation where we can’t return the data with the type we would like for the destination
    (ex. flat files or stored procedures).
    Check this short and sweet article :
    here
    If this post answers your query, please click "Mark As Answer" or "Vote as Helpful".

  • Is there a way to convert Crystal Reports to Microsoft SQL Server 2005 reporting services?

    Post Author: Lourdes Hernandez
    CA Forum: General
    Our department has always worked with and we love Crystal Reports. Unfortunately, certain reports now need to be converted to Microsoft SQL Server 2005 reporting services which from what I read I think they are *.rdl reports. Does Crystal reports have any way around this? I would have to learn this other tool when I'm already so happy with Crystal. I was thinking If I could just code the report in crystal and export it in a specific format that would be compatible Microsoft, the problem would be solved.
    Any ideas would be greatly appreciated.

    Post Author: bettername
    CA Forum: General
    Ditto!
    There are some software packages to convert from CR to RS, but none work 100% AFAIK, and will require manual tuning.
    Seems like a big hassle and learning curve just to get reports published via another method - I know I'd put up huge resistance if they tried to take my CR away from me!

  • Strange caching on a paging enabled data table when sql-command changes

    Got some strange results when changing the command property of a JdbcRowSetXImpl. To reproduce:
    - create new jsp page
    - drag a table from Data Sources onto the page design grid
    - put a DataTable on the page design grid
    - bind DataTable to the RowSet for the table from step 2
    - enable paging on the DataTable; make sure the page is smaller than the number of items in the table. Also add the page navigation buttons
    - add a read-write property 'query' to SessionBean1
    - add a button to the page design grid
    - double click button and add
    getSessionBean1().setQuery("SELECT * FROM <table> ORDER BY <someColumnName>"); // replace <> strings with appropriate names
    - change the command property / query string for the table in the page backing bean to getSessionBean1().getQuery();
    - run application
    - click on button with query change code 'behind it'
    - click on '->' next page button
    - click on '<-' previous page button
    Notice that one page is sorted, the other not. All pages that have been displayed before the 'query change' button was pressed remain in the 'old' sort order.
    I have tried to call xxxRowSet.execute(), dataTable1Model.getDataCache().reset() on several places, to no avail.
    The only hack I found to be working was adding a private static int hackCounter, and changing the ctor to dataTable1Model.setDataCacheKey("com.sun.datacache.bug.xxxRowSet" + hackCounter++);
    Clearly there must be a better solution.

    did u try dataTable1Model.execute();
    you didn't mention that you did.
    I have had datatables that didn't update only to find I didn't do dataTable1Model.execute();
    Regards
    Jonathan

  • Sql command not working with date time??

    I am using my own sql query to fetch data in the sql command.
    Due to the problem I found - here is the basic example:
    The sql is:
    select to_number(to_date('10/11/2011 10:23:00','dd/mm/yyyy hh24:mi:ss') - to_date('10/11/2011 10:20:00','dd/mm/yyyy hh24:mi:ss'))  minu  from dual
    But I am not getting anything in Crystal Report tool!!
    In any sql tool I get results.
    When I am not using time part (hh24:mi:ss) :
    select to_number(to_date('10/11/2011','dd/mm/yyyy') - to_date('09/11/2011','dd/mm/yyyy'))  minu
    from dual
    I am getting data!!!!
    What is the problem??
    Initially I had it with parameters of type 'Date Time'
    Please, any one knows what the problem is?

    Hi,
    Sorry for the delay and thanks for answering.
    It was partial solution
    Moving to oracle driver, not (OLE DB), this specific one worked fine:
    select to_number(to_date('10/11/2011 10:23:00','dd/mm/yyyy hh24:mi:ss') - to_date('10/11/2011 10:20:00','dd/mm/yyyy hh24:mi:ss'))*100 minu from dual
    BUT
    When I tried to change one of the hardcoded values to be parameter of type 'Date Time' I couldn't pass the validation step - mostly the errors:
    "ORA 00900 Invalid sql statment"   and
    "ORA - 00907: Missing right parnthesis"
    No matter which format I used.
    Last version is:  
    select to_date('{?tsStartReport}','yyyy-mm-dd hh24:mi:ss') from dual
    Any idea why 'Date Time; is so problematic? How can I workaround it?

  • Csv to sql commands

    hi ,
    I am using the below file to convert my csv file to sql commands. I am currently trying to update the contents of the stationary csv. So i replace the existing stationary csv with the new stationary csv, then run the make-sql.sh which creates an oracle compatable sql script all.sql....now my problem is that this all.sql is not getting updated right. i.e. when i compare the csv file and the all.sql there are fields that hold different data...pls let me know what cld be causing this....
    make-sql.sh
    #!/bin/sh
    GX_ROOTDIR=/apps/iasdev06/ias6/ias
    JAVA_HOME=/apps/iasdev06/ias6/ias/usr/java
    RMI_IIOP_HOME=${GX_ROOTDIR}/orbtools
    PATH=${JAVA_HOME}/bin:$PATH
    CLASSPATH=$GX_ROOTDIR/classes/java/ktjdk11.jar:$GX_ROOTDIR/classes/java/kadmin.jar:$JAVA_HOME/lib/tools.jar
    CLASSPATH=$GX_ROOTDIR/classes/java/ldapjdk.jar:$GX_ROOTDIR/classes/java/SWING.JAR:$GX_ROOTDIR/ias/APPS:$GX_ROOTDIR/APPS:$JAVA_HOME/jre/lib/rt.jar:$CLASSPATH
    CLASSPATH=$GX_ROOTDIR/classes/java/jdbc20.jar:$GX_ROOTDIR/classes/java/javax.jar:$GX_ROOTDIR/classes/java/kfcjdk11.jar:$GX_ROOTDIR/classes/java:$JAVA_HOME/lib/classes.zip:$CLASSPATH
    CLASSPATH=$GX_ROOTDIR/classes/java/servlet.jar:$CLASSPATH
    PKG=com.dupont.refrigerants.distributorlocator
    cd ../..
    SOURCE=`pwd`
    GENERATE_SQL=$JAVA_HOME/bin/java\ -classpath\ ${SOURCE}/build/lib/classes:${CLASSPATH}\ -Djava.compiler=NONE\ ${PKG}.DistributorDBABeanImpl\$GenerateInsertFromCSV
    cat < ${SOURCE}/buildscripts/datasource/prolog.sql > all.sql
    ${GENERATE_SQL} ${SOURCE}/buildscripts/datasource/stationary.csv 1 US | sort | uniq >> all.sql
    ${GENERATE_SQL} ${SOURCE}/buildscripts/datasource/canada.csv 1 CA | sort | uniq >> all.sql
    ${GENERATE_SQL} ${SOURCE}/buildscripts/datasource/mobile.csv 2 US | sort | uniq >> all.sql

    Hi,
    What you are doing here is, generating some data with prolog.sql and then, your main logic to csv to sql is in the Java program GenerateInsertFromCSV.java .
    So, you need to find out the logic of that code. The shell script is not doing anything apart from calling the Java code.
    Have a deep look into the same.
    Regards

  • Using unlinked sql command and table in a subreport

    All,
    Does CR allow using an unlinked sql command and a table in the same subreport?  I am passing the CurrentCEUserName from the main report to the sql command in the subreport (via linked parameter).  The sql command then executes a query to pass the parameter to the database (example: select myfunction('{?myparam}' from dual).  I need this to run before subreport's table query is executed. 
    This all appears to work except that the parameter passed to the sql command isn't set when the command executes.  The value is always null when the sql command is executed.  If I add the parameter to the report output it shows the expected value. 
    Also, if I have a subreport that just has a single sql command the parameter is set correctly prior to executing the command.
    any help would be appreciated.
    thanks!

    If you are looking for Crystal to run the SQL Command, then the SQL it generates itself, I think the answer is no, it won't do that.  Crystal expects all of the data sources to be linked, I believe.  I'm not sure what you would expect to happen if they are not...  However, you can make your SQL Command something like (MS SQL; sorry, it's been too long since I've used Oracle...):
    declare @result varchar(100);
    set @result = ( select myfunction('{?myparam}') );
    select * from table;
    which would run the first select calling your function, basically throw away the result (or you can do with it as needed), then return the fields from your table.
    HTH,
    Carl

  • Converting a SQL Command Parameter from Date to Char

    Hi,
    I'm using CR XI version 11.0.0.1282.  I've created a report using a SQL Command and have a parameter defined as Date.  I need to convert this Date parameter to a CHAR and have created my WHERE clause as:
    WHERE  "CC_PAYH"."PPOST"= CHAR ('{?From Date}') AND
    "CC_PAYH"."PPTYPE"<>13
    I get a message saying 2008 is not a valid token which in AS400 means it doesn't like the year.  Go figure. 
    I've tried running a similar query in AS400 and I get the desired affect.  I've tried removing the parameter from the Where clause and putting it into the Select like:
    CHAR ('{?From Date}') as MyTestDate
    just to see the representation I would get and I get the same error. 
    The question I have like everyone else is; is this possible with this version of Crystal?  I assume so since the same query will work in the database itself. 
    Thanks,
    Brian

    Hi Brain,
        Can you please try the query similar to the following syntax and verify whether it helps you!
    Select * from Orders where ([Order Date]) =
    CStr({?Date})
    Regards,
    Vinay

  • Crystal runs sql command of first sub report in the second sub report ?

    Hi,
    I have report that contains 3 sub reports.
    Each subreport is running his own sql command to retrieve it's data.
    When moving from the first subreport to the 2nd subreport, we see on the oracle that the crystal runs the sql command of the 1st subreport, and then the sql command of the 2nd subreport.
    The results are fine (he ignores the 1st subreport result in the 2nd subreport), but it delays the showing of the 2nd subreport to show.
    Why? The 2nd subreport doesn't need the data of the 1st subreport!
    How do I cancel that????
    BTW - The 3rd subreport is running only his own sql command (As should be).
    Thanks.

    Hello,
    Not without more info about the report and the data. If there is nothing linked from the main report to sub1 then it's going to run and return all data, no filtering. And from the sounds of it to take 5 + minutes per query this is going to affect performance for the whole report.
    You may want to re-evaluate why and what the subreports are used for. If they all use the same data the link them in the main report use groups to sort the data.
    Having subreports in the Details section is asking for performance problems, every record returned will cause the subreport to run. Not knowing what the subs are doing I can't say for sure....
    What you should do also is re-evaluate your Commands for each sub and see if you can do it either in one SQL statement or write a Stored Procedure to do all of the data collection. DB Servers are much more efficient at collecting data than CR will ever be. Pushing just the results to CR makes it simply formatting the results in the Designer and no performance hits....
    Talk to your DBA on how to optimize your Command SQL's and how to get them into one SQL or into a SP that dumps the final results into a final SQL * from TEMP Table into Crystal.
    Don

  • Crystal Report performance - subreports or sql command?

    Hello,
    bit of quandary, I've an existing report that contains six subreports all sharing the same parameter to the main report, a 'projectID' field.
    The main report approximately returns 300 records/projects and each of the 6 subreports are passed the corresponding 'projectID' field 300 times.
    Now, I've succesfully incorporated the main report query and corresponding subreports into a TSQL command containing a number of subqueries in the Select clause:
    SELECT   PROJECT.PROJECTID, PROJECT.TITLE, PROJECT.REFERENCE, PROJECTSTATUS.PROJECTSTATUS, PROJECT.INPUT_DATE
    ,(SELECT max(INPUT_DATE) FROM V_PROJECT_NOTE AS VPN
    WHERE PROJECT.PROJECTID = VPN.PROJECTID) AS LastHeadline
    ,(SELECT
    MAX(CASE
         WHEN MODIFIED_DATE IS NULL THEN INPUT_DATE
         WHEN INPUT_DATE > MODIFIED_DATE THEN INPUT_DATE
              ELSE MODIFIED_DATE
    END) FROM ISSUE WHERE PROJECT.PROJECTID = ISSUE.PROJECTID) AS LastNewIssue
    ,(SELECT max(ISSUENOTE.INPUT_DATE) FROM ISSUE
    INNER JOIN ISSUENOTE ON ISSUE.ISSUEID = ISSUENOTE.ISSUEID
    WHERE PROJECT.PROJECTID = ISSUE.PROJECTID ) AS LastIssueNote 
    ,(SELECT max(modified_date) FROM V_PROJECT_RISK_LAST_AMMENDED AS VPR
    WHERE PROJECT.PROJECTID = VPR.PROJECTID) AS LastRiskLogUpdate
    ,(SELECT max(INPUT_DATE) FROM PROJECT_CHECKLIST AS PC
    WHERE PROJECT.PROJECTID = PC.PROJECTID) AS LastChecklistUpdate
    ,(SELECT max(input_date) FROM V_PROJECT_ACTIVITY_LAST_AMMENDED AS VPA
    WHERE PROJECT.PROJECTID = VPA.PROJECTID) AS LastGANTTUpdate 
    ,V_PROJECT_KEYCONTACT.USERNAME AS KeyContact
    ,(SELECT     USERPROFILE.USERNAME AS Supervisor
    FROM         USERPROFILE INNER JOIN
                          PROJECT_MEMBER AS SUPERVISOR ON USERPROFILE.USERID = SUPERVISOR.USERID RIGHT OUTER JOIN
                          PROJECT_MEMBER AS KEYCONTACT ON SUPERVISOR.PROJECT_MEMBERID = KEYCONTACT.PARENTID
    WHERE PROJECT.PROJECTID = KEYCONTACT.PROJECTID
    AND KEYCONTACT.KEY_CONTACT =1) AS Supervisor
    FROM         PROJECT INNER JOIN
                          PROJECTSTATUS ON PROJECT.PROJECTSTATUSID = PROJECTSTATUS.PROJECTSTATUSID LEFT OUTER JOIN
                          V_PROJECT_KEYCONTACT ON PROJECT.PROJECTID = V_PROJECT_KEYCONTACT.PROJECTID
    WHERE V_PROJECT_KEYCONTACT.USERNAME IN ('aaa','bbb','ccc')
    AND (PROJECTSTATUS.PROJECTSTATUS IN ('111', '222', '333'))
    AND ((PROJECT.TITLE NOT LIKE 'xxx%') AND (PROJECT.TITLE NOT LIKE 'yyy%') AND (PROJECT.TITLE NOT LIKE 'zzz%'))
    ORDER BY V_PROJECT_KEYCONTACT.USERNAME, PROJECT.INPUT_DATE
    Now, I've run both SQL Server Profiler and looked at the Performance Information in Crystal and the SQL command method is an order of magnitude less efficient!!
    I may have to post my query on a TSQL forum but was wondering if anyone on here can possible shed any light on it?
    Thanks in advance,
    Dom

    Dom,
    I assume that the last edit was to remove a few curse words...
    The reality is that we can give a good explanation as to why the sub-report version would execute faster that the command version w/o seeing the report (with the sub-reports included).
    Looking at the SQL, I can tell that it's a fairly expensive query, firing several sub-queries for every row returned by the outer query. That said, I sounds like the same thing is taking place with the sub-report version too... So I would think that the performance would be similar.
    The only thing that I can think of, and this is just a guess... With the sub-report version, each all queries are being run independently and then combined locally by CR, whereas the command version, everything is combined. The more complex the query, the harder the optimizer has to work to come up with the best execution plan... and the greater the likelihood that that the resulting plan isn't as optimized as it could be.
    That said, I'd still think the command version would be faster over all. Are you seeing real differences between the two reports, in the amount of time that it takes from refresh to final render?
    Either way, I think moving all of those sub-queries from the select list (where they are executing once for every row) down to the FROM area (where they only have to execute once) should increase the speed dramatically and surpass the sub-report version by a decent margin.
    Give this version of your SQL a test drive and see if it yields an improvement.
    SELECT  
    PROJECT.PROJECTID,
    PROJECT.TITLE,
    PROJECT.REFERENCE,
    PROJECTSTATUS.PROJECTSTATUS,
    PROJECT.INPUT_DATE,
    VPN.LastHeadline,
    ISSUE.LastNewIssue,
    ISSUE_NOTE.LastIssueNote,
    VPR.LastRiskLogUpdate,
    PC.LastChecklistUpdate,
    VPA.LastGANTTUpdate,
    V_PROJECT_KEYCONTACT.USERNAME AS KeyContact,
    Supervisor.Supervisor
    FROM PROJECT
    INNER JOIN PROJECTSTATUS ON PROJECT.PROJECTSTATUSID = PROJECTSTATUS.PROJECTSTATUSID
    LEFT OUTER JOIN V_PROJECT_KEYCONTACT ON PROJECT.PROJECTID = V_PROJECT_KEYCONTACT.PROJECTID
    LEFT OUTER JOIN (
         SELECT PROJECTID,
         max(INPUT_DATE) AS LastHeadline
         FROM V_PROJECT_NOTE
         GROUP BYPROJECTID) AS VPN ON PROJECT.PROJECTID = VPN.PROJECTID
    LEFT OUTER JOIN (
         SELECT PROJECTID,
         MAX(CASE
              WHEN MODIFIED_DATE IS NULL THEN INPUT_DATE
              WHEN INPUT_DATE > MODIFIED_DATE THEN INPUT_DATE
              ELSE MODIFIED_DATE END) AS LastNewIssue
         FROM ISSUE
         GROUP BY PROJECTID) AS ISSUE ON PROJECT.PROJECTID = ISSUE.PROJECTID
    LEFT OUTER JOIN (
         SELECT ISSUE.PROJECTID,
         max(ISSUENOTE.INPUT_DATE) AS LastIssueNote
         FROM ISSUE
         INNER JOIN ISSUENOTE ON ISSUE.ISSUEID = ISSUENOTE.ISSUEID
         GROUP BY ISSUE.PROJECTID) AS ISSUE_NOTE ON PROJECT.PROJECTID = ISSUE_NOTE.PROJECTID
    LEFT OUTER JOIN (
         SELECT PROJECTID,
         max(modified_date) AS LastRiskLogUpdate
         FROM V_PROJECT_RISK_LAST_AMMENDED
         GROUP BY PROJECTID) AS VPR ON PROJECT.PROJECTID = VPR.PROJECTID
    LEFT OUTER JOIN (
         SELECT PROJECTID,
         max(INPUT_DATE) AS LastChecklistUpdate
         FROM PROJECT_CHECKLIST
         GROUP BY PROJECTID) AS PC ON PROJECT.PROJECTID = PC.PROJECTID
    LEFT OUTER JOIN (
         SELECT PROJECTID,
         max(input_date) AS LastGANTTUpdate
         FROM V_PROJECT_ACTIVITY_LAST_AMMENDED
         GROUP BY PROJECTID) AS VPA ON PROJECT.PROJECTID = VPA.PROJECTID
    LEFT OUTER JOIN (
         SELECT PROJECTID,
         USERPROFILE.USERNAME AS Supervisor
         FROM USERPROFILE
         INNER JOIN PROJECT_MEMBER AS SUPERVISOR ON USERPROFILE.USERID = SUPERVISOR.USERID RIGHT
         OUTER JOIN PROJECT_MEMBER AS KEYCONTACT ON SUPERVISOR.PROJECT_MEMBERID = KEYCONTACT.PARENTID
         WHERE KEYCONTACT.KEY_CONTACT =1) AS Supervisor ON PROJECT.PROJECTID = Supervisor.PROJECTID
    WHERE V_PROJECT_KEYCONTACT.USERNAME IN ('aaa','bbb','ccc')
    AND (PROJECTSTATUS.PROJECTSTATUS IN ('111', '222', '333'))
    AND ((PROJECT.TITLE NOT LIKE 'xxx%')
    AND (PROJECT.TITLE NOT LIKE 'yyy%')
    AND (PROJECT.TITLE NOT LIKE 'zzz%'))
    ORDER BY V_PROJECT_KEYCONTACT.USERNAME, PROJECT.INPUT_DATE
    HTH,
    Jason

  • SQL command to get latest effective date

    Hi!
    How can i want to write a sql command to fetch records as such
    Vendor;    Item;     EffectiveDate;    UnitPrice;    Remarks
    Vend1;      ABC;    31/01/2012;        120;            Dont show
    Vend1;      ABC;    29/02/2012;        150;            Show
    Vend2;      ABC;    01/01/2012;        140;            Show
    Vend1;      XYZ;    15/01/2012;        100;            Show
    Please help me, so far I can only figuire out how to get the latest effective date by vendor and item but was not able to get UnitPrice
    SELECT  "VendPart"."Vendor", "VendPart"."Item", Max("VendPart"."EffectiveDate") AS MaxOfEffectiveDate
    FROM   "POS_LiveRpt"."dbo"."VendPart" "VendPart"
    GROUp BY "VendPart"."Vendor", "VendPart"."Item"
    Edited by: MichellePoh on Feb 23, 2012 9:58 AM

    hi Michelle,
    you can use a subquery in your command to bring back the UnitPrice that is applicable to the max date...see the code below for an idea.
    you'll have to change the "UnitPrice" field below to match yours.
    note that in the subquery the vendpart table has been aliased as vendpart2 for the subquery to work. also note that the code may not work in your database as Alan aluded to the fact that the syntax is specific to the database type...if you get any database errors please refer to your database manual or a forum for your database type that has a subquery. and of course there may be errors from my typing in the query as it's just being done inside this forum thread...but hopefully this will give you an idea how to do this.
    cheers,
    jamie
    SELECT 
    "VendPart"."Vendor",
    "VendPart"."Item",
    Max("VendPart"."EffectiveDate") AS MaxOfEffectiveDate,
    SELECT "VendPart2"."UnitPrice"
    FROM "POS_LiveRpt"."dbo"."VendPart" "VendPart2"
    WHERE "VendPart2"."EffectiveDate" = Max("VendPart"."EffectiveDate")
    AND  "VendPart2"."Vendor" =  "VendPart"."Vendor"
    AND "VendPart2"."Item" = "VendPart"."Item"
    ) AS UnitPrice
    FROM  
    "POS_LiveRpt"."dbo"."VendPart" "VendPart"
    GROUp BY
    "VendPart"."Vendor", "VendPart"."Item"

Maybe you are looking for

  • Email and SMS notifications stop working occassion...

    I recently updated the firmware on my E71 to the latest.  I now have an issue where the email and SMS notifications on the home page periodically disappear.  Once the notification icons have disappeared, I need to restart my device in order to get th

  • Missing shared libraries?

    Hi all, I tried to install j2ee 1.4.2 Beta on my redhat linux 9 machine. After I downloaded and unzipped the zip file, I follow the installation instruction by typing ./setup in the extract folder. However, the follow error comes out: error while loa

  • Regarding shared file system requirement in endeca server cluster

    Hi, Our solution involves running a single data domain in an endeca server cluster. As per the documentation, endeca server cluster requires shared file system for keeping index file for follower node to read. My questions are, Can I run the endeca c

  • [SOLVED] KDE issues (takes 10 minutes to start, oxygen theme)

    Hi everyone, after today's update, KDE is taking about 10 minutes to fully start (instead of 5 seconds - i have an SSD), about 3-4 minutes to get over the splash screen, then 3-4 minutes black desktop, and then slowly the taskbar, then the icons on s

  • Optimal settings for encoding HDV 1080i footage to SD dvd

    I have footage recorded from an HDV camcorder and edited in FCP 1080i 60. It is fast moving sports footage shot with a high shutter speed the total running time is 40 min. I have encoded it to DVD by taking the HDV 16:9 FCP sequence dropping it to a