Author |
Topic |
chriztoph
Posting Yak Master
184 Posts |
Posted - 2013-09-02 : 05:14:08
|
Can someone look what's wrong with my code?Msg 156, Level 15, State 1Incorrect syntax near the keyword 'UNION'.BEGIN SELECT COMPANYID, SUM(BLCOUNT) AS BLCOUNT, [MONTHNAME] + ' ' + CAST([YEAR] AS VARCHAR(10)) AS [MONTHYEAR] FROM ( SELECT COMPANYID, COUNT(BLNUMBER) AS BLCOUNT, DATENAME(m, RECEIVEDATE) AS [MONTHNAME], YEAR(RECEIVEDATE) AS [YEAR], DATEPART(m, RECEIVEDATE) AS SORTBYMONTH FROM OSUSR_G8V_BLINFO WHERE DATEPART(m, RECEIVEDATE) >= @MonthFrom AND DATEPART(m, RECEIVEDATE) <= @MonthTo AND DATEPART(year, RECEIVEDATE) = @Year GROUP BY COMPANYID, RECEIVEDATE UNION ALL SELECT COMPANYID, 0 as BLCOUNT, DATENAME(month, dateadd(month, number - 1, CAST(DATEPART(YEAR, RECEIVEDATE) AS VARCHAR(5)) + '0101')) as MONTHNAME, CAST(DATEPART(YEAR, RECEIVEDATE) AS VARCHAR(5)) AS [YEAR], number as SORTBYMONTH FROM OSUSR_G8V_BLINFO CROSS JOIN master..spt_values WHERE type = 'P' AND number between @MonthFrom and @MonthTo ) AS BLLIST GROUP BY COMPANYID, [MONTHNAME], [YEAR], SORTBYMONTH ORDER BY BLLIST.COMPANYID, SORTBYMONTH UNION ALL SELECT COMPANYID, SUM(BLCOUNT)/((@MonthFrom - @MonthTo) + 1) AS BLCOUNT, 'AVERAGE' AS [MONTHYEAR] FROM ( SELECT COMPANYID, COUNT(BLNUMBER) AS BLCOUNT, DATENAME(m, RECEIVEDATE) AS [MONTHNAME], YEAR(RECEIVEDATE) AS [YEAR], DATEPART(m, RECEIVEDATE) AS SORTBYMONTH FROM OSUSR_G8V_BLINFO WHERE DATEPART(m, RECEIVEDATE) >= @MonthFrom AND DATEPART(m, RECEIVEDATE) <= @MonthTo AND DATEPART(year, RECEIVEDATE) = @Year GROUP BY COMPANYID, RECEIVEDATE ) AS BLTOTAL GROUP BY COMPANYID, SORTBYMONTH ORDER BY BLTOTAL.COMPANYID, SORTBYMONTH END |
|
bandi
Master Smack Fu Yak Hacker
2242 Posts |
Posted - 2013-09-02 : 05:56:41
|
ORDER BY BLLIST.COMPANYID, SORTBYMONTHUNION ALL Remove ORDER BY clause before UNION ALL--Chandu |
 |
|
chriztoph
Posting Yak Master
184 Posts |
Posted - 2013-09-02 : 06:07:50
|
I need that line.the how will I get the sum of BLCOUNT column and include in my result as my average without removing the order by part? |
 |
|
bandi
Master Smack Fu Yak Hacker
2242 Posts |
Posted - 2013-09-02 : 08:04:19
|
>>the how will I get the sum of BLCOUNT column and include in my result as my average without removing the order by part? I haven't get what does mean?--Check once the below query;WITH CteBLTOTAL AS ( SELECT COMPANYID, COUNT(BLNUMBER) AS BLCOUNT, DATENAME(m, RECEIVEDATE) AS [MONTHNAME], YEAR(RECEIVEDATE) AS [YEAR], DATEPART(m, RECEIVEDATE) AS SORTBYMONTH FROM OSUSR_G8V_BLINFO WHERE DATEPART(m, RECEIVEDATE) >= @MonthFrom AND DATEPART(m, RECEIVEDATE) <= @MonthTo AND DATEPART(year, RECEIVEDATE) = @Year GROUP BY COMPANYID, RECEIVEDATE)SELECT COMPANYID, SUM(BLCOUNT) AS BLCOUNT, [MONTHNAME] + ' ' + CAST([YEAR] AS VARCHAR(10)) AS [MONTHYEAR] FROM (SELECT COMPANYID, BLCOUNT, [MONTHNAME], [YEAR], SORTBYMONTH FROM CteBLTOTAL UNION ALL SELECT COMPANYID, 0 as BLCOUNT, DATENAME(month, dateadd(month, number - 1, CAST(DATEPART(YEAR, RECEIVEDATE) AS VARCHAR(5)) + '0101')) as MONTHNAME, CAST(DATEPART(YEAR, RECEIVEDATE) AS VARCHAR(4)) AS [YEAR], number as SORTBYMONTH FROM OSUSR_G8V_BLINFO CROSS JOIN master..spt_values WHERE type = 'P' AND number between @MonthFrom and @MonthTo ) AS BLLISTGROUP BY COMPANYID, [MONTHNAME], [YEAR], SORTBYMONTHUNION ALLSELECT COMPANYID, SUM(BLCOUNT)/((@MonthFrom - @MonthTo) + 1) AS BLCOUNT, 'AVERAGE' AS [MONTHYEAR] FROM CteBLTOTALGROUP BY COMPANYID, SORTBYMONTHORDER BY BLTOTAL.COMPANYID, SORTBYMONTH --Chandu |
 |
|
chriztoph
Posting Yak Master
184 Posts |
Posted - 2013-09-02 : 22:20:16
|
My result should be like this.COMPANYID BLCOUNT MONTHYEAR1 0 April 20131 15 May 20131 67 June 20131 9 July 20131 22.75 AVERAGE2 0 April 20132 7 May 20132 1 June 20132 2 July 20132 2.5 AVERAGE |
 |
|
chriztoph
Posting Yak Master
184 Posts |
Posted - 2013-09-02 : 23:24:51
|
Got an errorMsg 104, Level 16, State 1, Line 33ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator. |
 |
|
chriztoph
Posting Yak Master
184 Posts |
Posted - 2013-09-03 : 02:18:06
|
Thanks @bandi. I'm no longer pursue this solution, I have made in other way. Thank you again. |
 |
|
bandi
Master Smack Fu Yak Hacker
2242 Posts |
Posted - 2013-09-03 : 03:08:04
|
--May be this?;WITH CteBLTOTAL AS ( SELECT COMPANYID, COUNT(BLNUMBER) AS BLCOUNT, DATENAME(m, RECEIVEDATE) AS [MONTHNAME], YEAR(RECEIVEDATE) AS [YEAR], DATEPART(m, RECEIVEDATE) AS SORTBYMONTH FROM OSUSR_G8V_BLINFO WHERE DATEPART(m, RECEIVEDATE) >= @MonthFrom AND DATEPART(m, RECEIVEDATE) <= @MonthTo AND DATEPART(year, RECEIVEDATE) = @Year GROUP BY COMPANYID, RECEIVEDATE)SELECT COMPANYID, SUM(BLCOUNT) AS BLCOUNT, [MONTHNAME] + ' ' + CAST([YEAR] AS VARCHAR(10)) AS [MONTHYEAR], SORTBYMONTH FROM (SELECT COMPANYID, BLCOUNT, [MONTHNAME], [YEAR], SORTBYMONTH FROM CteBLTOTAL UNION ALL SELECT COMPANYID, 0 as BLCOUNT, DATENAME(month, dateadd(month, number - 1, CAST(DATEPART(YEAR, RECEIVEDATE) AS VARCHAR(5)) + '0101')) as MONTHNAME, CAST(DATEPART(YEAR, RECEIVEDATE) AS VARCHAR(4)) AS [YEAR], number as SORTBYMONTH FROM OSUSR_G8V_BLINFO CROSS JOIN master..spt_values WHERE type = 'P' AND number between @MonthFrom and @MonthTo ) AS BLLISTGROUP BY COMPANYID, [MONTHNAME], [YEAR], SORTBYMONTHUNION ALLSELECT COMPANYID, SUM(BLCOUNT)/((@MonthFrom - @MonthTo) + 1) AS BLCOUNT, 'AVERAGE' AS [MONTHYEAR], SORTBYMONTHFROM CteBLTOTALGROUP BY COMPANYID, SORTBYMONTHORDER BY BLTOTAL.COMPANYID, SORTBYMONTH --Chandu |
 |
|
|
|
|