select DATEpart(Mm,(Convert(Date,semua_tkh_Daftar_txt,103))) as MonthNo,DATENAME(Year,(Convert(Date,semua_tkh_Daftar_txt,103))) as Year, DATENAME(Mm,(Convert(Date,semua_tkh_Daftar_txt,103))) as Month, COUNT(doclinkid) as Registered, sum(case when REPWPK.T_BMAL.Semua_Status_Kod like 'S%' then 1 else 0 end) as Finilised, sum(case when REPWPK.T_BMAL.Semua_Status_Kod not like 'S%' then 1 else 0 end) as Remainigfrom REPWPK.T_BMAL group by DATEpart(Mm,(Convert(Date,semua_tkh_Daftar_txt,103))),DATENAME(Year,(Convert(Date,semua_tkh_Daftar_txt,103))), DATENAME(Mm,(Convert(Date,semua_tkh_Daftar_txt,103)))order by DATENAME(Year,(Convert(Date,semua_tkh_Daftar_txt,103))), DATEpart(Mm,(Convert(Date,semua_tkh_Daftar_txt,103)))
MonthNo Year Month Registered Finilised Remainig1 2012 January 762 685 772 2012 February 719 653 663 2012 March 759 655 1044 2012 April 704 599 1055 2012 May 821 684 137
SELECT x.MonthNo, x.[Year], x.[Month], COUNT(doclinkid) as Registered, -- is this correct? COUNT(DISTINCT doclinkid) as Registered, -- OR is this correct? SUM(x.Finalised) as Finalised, COUNT(*) - SUM(x.Finalised) AS [Remaining] FROM REPWPK.T_BMALCROSS APPLY ( SELECT semua_date = CONVERT(DATE,semua_tkh_Daftar_txt,103), Finalised = CASE WHEN Semua_Status_Kod LIKE 'S%' THEN 1 ELSE 0 END) xCROSS APPLY ( SELECT [Year] = DATENAME(YEAR,x.semua_date), [Month] = DATENAME(Mm,x.semua_date), [MonthNo] = DATEPART(Mm,x.semua_date)) y GROUP BY x.MonthNo, x.[Year], x.[Month]ORDER BY x.[Year], x.MonthNo
Msg 207, Level 16, State 1, Line 22Invalid column name 'MonthNo'.Msg 207, Level 16, State 1, Line 23Invalid column name 'Year'.Msg 207, Level 16, State 1, Line 24Invalid column name 'Month'.Msg 207, Level 16, State 1, Line 2Invalid column name 'MonthNo'.Msg 207, Level 16, State 1, Line 3Invalid column name 'Year'.Msg 207, Level 16, State 1, Line 4Invalid column name 'Month'.
SELECT y.MonthNo, y.[Year], y.[Month], COUNT(doclinkid) as Registered, -- is this correct? COUNT(DISTINCT doclinkid) as Registered, -- OR is this correct? SUM(x.Finalised) as Finalised, COUNT(*) - SUM(x.Finalised) AS [Remaining] FROM REPWPK.T_BMALCROSS APPLY ( SELECT semua_date = CONVERT(DATE,semua_tkh_Daftar_txt,103), Finalised = CASE WHEN Semua_Status_Kod LIKE 'S%' THEN 1 ELSE 0 END) xCROSS APPLY ( SELECT [Year] = DATENAME(YEAR,x.semua_date), [Month] = DATENAME(Mm,x.semua_date), [MonthNo] = DATEPART(Mm,x.semua_date)) y GROUP BY y.MonthNo, y.[Year], y.[Month]ORDER BY y.[Year], y.MonthNo
CREATE TABLE tblPopulation (MonthNo VARCHAR(100),Month_Name VARCHAR(100),Population_A INT)GOINSERT INTO tblPopulation VALUES('1', 'January',9 )INSERT INTO tblPopulation VALUES('2', 'February',8 )INSERT INTO tblPopulation VALUES('3', 'March',5.5)INSERT INTO tblPopulation VALUES('4', 'April',7.5)INSERT INTO tblPopulation VALUES('5', 'May',9.5)-- Query SELECT a.MONTHNO, (SELECT SUM(POPULATION_A) FROM (SELECT POPULATION_A FROM TBLPOPULATION b WHERE a.MONTHNO >= b.MONTHNO) test)FROM TBLPOPULATION a
--===== Create the table CREATE TABLE [REPWPK].[T_BMAL]( [DocLinkID] [nvarchar](50) NULL, [Semua_Tkh_Daftar_TXT] [varchar](50) NULL, [Semua_Status_Kod] [nvarchar](50) NULL,) ON [PRIMARY]--== Some sample dataINSERT INTO [REPWPK].[T_BMAL] ([DocLinkID] ,[Semua_Tkh_Daftar_TXT] ,[Semua_Status_Kod])SELECT '73G9VMWPKY2352007MCO','23/05/2007','S07' UNION ALLSELECT '7L2BYCWPKY3112008MCO','03/11/2008','S02' UNION ALLSELECT '6XJAUMWPKY1712007MCO','17/01/2007','S05' UNION ALLSELECT '6KBAFLWPKY22122005MCO','22/12/2005','S07' UNION ALLSELECT '8WABNCWPKY1772012MCO','17/07/2012','TT03' UNION ALLSELECT '8FT6RLWPKY1142011MCO','1/04/2011','S05' UNION ALLSELECT '76K7P7WPKY3082007P','30/08/2007','S01' UNION ALLSELECT '8US5APWPKY3052012','30/05/2012','S06' UNION ALLSELECT '93THMMWPKY1012013MCO','10/01/2013','TT02' UNION ALLSELECT '7QNBNXWPKY3132009MCO','31/03/2009','S07'
--===== Create the table CREATE TABLE #T_BMAL( [DocLinkID] [nvarchar](50) NULL, [Semua_Tkh_Daftar_TXT] [varchar](50) NULL, [Semua_Status_Kod] [nvarchar](50) NULL,) ON [PRIMARY]--== Some sample dataINSERT INTO #T_BMAL ([DocLinkID] ,[Semua_Tkh_Daftar_TXT] ,[Semua_Status_Kod])SELECT '73G9VMWPKY2352007MCO','23/05/2007','S07' UNION ALLSELECT '7L2BYCWPKY3112008MCO','03/11/2008','S02' UNION ALLSELECT '6XJAUMWPKY1712007MCO','17/01/2007','S05' UNION ALLSELECT '6KBAFLWPKY22122005MCO','22/12/2005','S07' UNION ALLSELECT '8WABNCWPKY1772012MCO','17/07/2012','TT03' UNION ALLSELECT '8FT6RLWPKY1142011MCO','1/04/2011','S05' UNION ALLSELECT '76K7P7WPKY3082007P','30/08/2007','S01' UNION ALLSELECT '8US5APWPKY3052012','30/05/2012','S06' UNION ALLSELECT '93THMMWPKY1012013MCO','10/01/2013','TT02' UNION ALLSELECT '7QNBNXWPKY3132009MCO','31/03/2009','S07' -- Group by month, pop the results into a #temp table (or use a CTE)SELECT Seq = ROW_NUMBER() OVER(ORDER BY y.[Year],y.MonthNo), y.MonthNo, y.[Year], y.[Month], Registered = COUNT(*), Finalised = SUM(x.Finalised), Remaining = COUNT(*) - SUM(x.Finalised)INTO #Temp FROM #T_BMALCROSS APPLY ( SELECT semua_date = CONVERT(DATE,semua_tkh_Daftar_txt,103), Finalised = CASE WHEN Semua_Status_Kod LIKE 'S%' THEN 1 ELSE 0 END) xCROSS APPLY ( SELECT [Year] = DATENAME(YEAR,x.semua_date), [Month] = DATENAME(Mm,x.semua_date), [MonthNo] = DATEPART(Mm,x.semua_date)) y GROUP BY y.MonthNo, y.[Year], y.[Month]ORDER BY y.[Year], y.MonthNo-- Use a recursive cTE to calculate the running total of Remaining ;WITH Calculator AS ( SELECT t.Seq, t.[Year], t.[Month], t.MonthNo, t.Registered, t.Finalised, t.Remaining, RunningTotal = t.Remaining FROM #Temp t WHERE Seq = 1 UNION ALL SELECT t.Seq, t.[Year], t.[Month], t.MonthNo, t.Registered, t.Finalised, t.Remaining, RunningTotal = c.RunningTotal + t.Remaining FROM #Temp t INNER JOIN Calculator c ON c.Seq + 1 = t.Seq) SELECT * FROM Calculator ORDER BY Seq-- Clean upDROP TABLE #Temp DROP TABLE #T_BMAL