Home Forums SQL Server 2008 SQL Server Newbies How Do You Keep The "Pieces" Of A Complex Statement "Organized" RE: How Do You Keep The "Pieces" Of A Complex Statement "Organized"

  • If you are talking about formatting your code into a more readily readable layout then there are several "tools/addins" that will allow you to do this...along with allowing you to fine tune the output to your personal preference.

    One I have used (no connection) is ApexSQL refactor.....last time I looked it was free

    (http://www.apexsql.com/sql_tools_refactor.aspx)

    Please note that there are several tools like this ...take a Google and choose what you feel happy with.

    these can take adhoc layout (as written) and format code from something like this (deliberately brutalised 🙂 )

    SELECT o.JOB_NUMBER AS Job# , ORDER_NO AS Order# , FORM_NO AS Form ,

    CUST_IDENT AS SpecID , QTY_ORDERED AS QtyOrdered ,

    ORD_PRICE AS UnitPrice , PRICING_METH AS UOM ,

    s.COLOR_DESC AS Colors , opsused.PreStamp , opsused.Decorative ,

    opsused.Emboss , DESIGN_NO AS Drawing ,

    CAST (

    CAST( s.dim_A AS decimal( 9 , 3 ))

    AS varchar( 7 )) + ' x ' + CAST( CAST( s.DIM_B AS decimal( 9 , 3 ))

    AS varchar( 7 )) + ' x ' + CAST( CAST( s.DIM_C AS decimal( 9 , 3 ))

    AS varchar( 7 ))AS Dimensions ,

    gf.DESCR AS Board , DUE_DATE AS DueDate , COMPLETION_FLG AS OrderStatus

    FROM ORDERS AS o LEFT JOIN SPECS AS s ON s.SPEC_NO = o.SPEC_NO

    LEFT JOIN GRADE_FILE AS gf ON gf.GRADE_CD = s.GRADE_CD

    LEFT JOIN( SELECT JobOpsList.JobNum , CASE jobopslist.prestamp

    WHEN 0 THEN '' ELSE 'Y' END AS PreStamp , CASE jobopslist.Decorative

    WHEN 0 THEN '' ELSE 'Y' END AS Decorative , CASE jobopslist.Emboss

    WHEN 0 THEN '' ELSE 'Y' END AS Emboss FROM( SELECT JobList.JobNum ,

    SUM( CASE ops.Mach_No WHEN 288 THEN 1 ELSE 0

    END )AS PreStamp , SUM( CASE ops.Mach_No

    WHEN 290 THEN 1 ELSE 0 END )AS Decorative ,

    SUM( CASE ops.Mach_No WHEN 292 THEN 1 ELSE 0

    END )AS Emboss FROM

    (

    SELECT JOB_NUMBER AS JobNum ,

    CASE ISNULL( o.COMBO_NO , '' ) WHEN '' THEN o.SPEC_NO ELSE o.COMBO_NO

    END AS MfrSpec FROM ORDERS AS o

    WHERE o.CSCODE = '2507' AND ORDER_DATE >= '1/1/2012' AND COMPLETION_FLG <> 'X'

    GROUP BY JOB_NUMBER , CASE ISNULL( o.combo_no , '' )

    WHEN '' THEN o.SPEC_NO ELSE o.COMBO_NO

    END )AS JobList LEFT JOIN OPERATIONS AS ops ON ops.SPEC_NO = JobList.MfrSpec

    WHERE ops.MACH_NO IN( 288 , 290 , 292 )

    GROUP BY JobNum )AS JobOpsList )AS OpsUsed ON OpsUsed.JobNum = o.JOB_NUMBER

    WHERE o.CSCODE = '2507' AND ORDER_DATE >= '1/1/2012' AND COMPLETION_FLG <> 'X';

    to something like this...in a click

    SELECT o.JOB_NUMBER AS Job# ,

    ORDER_NO AS Order# ,

    FORM_NO AS Form ,

    CUST_IDENT AS SpecID ,

    QTY_ORDERED AS QtyOrdered ,

    ORD_PRICE AS UnitPrice ,

    PRICING_METH AS UOM ,

    s.COLOR_DESC AS Colors ,

    opsused.PreStamp ,

    opsused.Decorative ,

    opsused.Emboss ,

    DESIGN_NO AS Drawing ,

    CAST( CAST( s.dim_A AS decimal( 9 , 3 ))AS varchar( 7 )) + ' x '

    + CAST( CAST( s.DIM_B AS decimal( 9 , 3 ))AS varchar( 7 )) + ' x '

    + CAST( CAST( s.DIM_C AS decimal( 9 , 3 ))AS varchar( 7 ))AS Dimensions ,

    gf.DESCR AS Board ,

    DUE_DATE AS DueDate ,

    COMPLETION_FLG AS OrderStatus

    FROM

    ORDERS AS o LEFT JOIN SPECS AS s ON s.SPEC_NO = o.SPEC_NO

    LEFT JOIN GRADE_FILE AS gf ON gf.GRADE_CD = s.GRADE_CD

    LEFT JOIN(

    SELECT JobOpsList.JobNum ,

    CASE jobopslist.prestamp

    WHEN 0 THEN '' ELSE 'Y'

    END AS PreStamp ,

    CASE jobopslist.Decorative

    WHEN 0 THEN '' ELSE 'Y'

    END AS Decorative ,

    CASE jobopslist.Emboss

    WHEN 0 THEN '' ELSE 'Y'

    END AS Emboss

    FROM(

    SELECT JobList.JobNum ,

    SUM( CASE ops.Mach_No

    WHEN 288 THEN 1 ELSE 0

    END )AS PreStamp ,

    SUM( CASE ops.Mach_No

    WHEN 290 THEN 1 ELSE 0

    END )AS Decorative ,

    SUM( CASE ops.Mach_No

    WHEN 292 THEN 1 ELSE 0

    END )AS Emboss

    FROM

    (

    SELECT JOB_NUMBER AS JobNum ,

    CASE ISNULL( o.COMBO_NO , '' )

    WHEN '' THEN o.SPEC_NO ELSE o.COMBO_NO

    END AS MfrSpec

    FROM ORDERS AS o

    WHERE o.CSCODE = '2507'

    AND ORDER_DATE >= '1/1/2012'

    AND COMPLETION_FLG <> 'X'

    GROUP BY JOB_NUMBER ,

    CASE ISNULL( o.combo_no , '' )

    WHEN '' THEN o.SPEC_NO ELSE o.COMBO_NO

    END )AS JobList LEFT JOIN OPERATIONS AS ops ON ops.SPEC_NO = JobList.MfrSpec

    WHERE ops.MACH_NO IN( 288 , 290 , 292 )

    GROUP BY JobNum )AS JobOpsList )AS OpsUsed ON OpsUsed.JobNum = o.JOB_NUMBER

    WHERE o.CSCODE = '2507'

    AND ORDER_DATE >= '1/1/2012'

    AND COMPLETION_FLG <> 'X';

    ________________________________________________________________
    you can lead a user to data....but you cannot make them think
    and remember....every day is a school day