Grouping age with parameter | SQL Server Performance Forums

SQL Server Performance Forum – Threads Archive

Grouping age with parameter

have a big table in which I have DOB, I have to extract age from DOB first then I have to group them into different groups.
I think I can extract age from the table. But the problem is in this grouping part.
So I created a simple table with a field Age , having values from 1 to 100.
I a trying to group that table according to the users need. That is: i have a parameter in the report called The count for grouping,they can give count from 1 to 10.
Consider @Count as the parameter for count.
What I am planning to do is to find out the grouping first and I have to find out each records from my big table that fit in this group..
Is that clear..??
I tried to make a group with your command , but it is not giving me the proper values for @count=2 and @count=3.because it is giving the group like:
1 1
2 3
4 5
etc for the @count=2.
I am confused whether I can use this to find out the records from the big table. I have to find out total score of the that agegroup and display in the report like:
age gorup totalscore
1 -2 25( what ever value from the table after checking)
3-4 30
5-6 10
etc…

I have doubt that you can get the result in single select query…
Not sure but is this you are looking for. Declare @Stud Table ( Rno int, Age int )
Insert Into @Stud Values ( 1, 10 )
Insert Into @Stud Values ( 2, 11 )
Insert Into @Stud Values ( 3, 8 )
Insert Into @Stud Values ( 4, 5 )
Insert Into @Stud Values ( 5, 25 )
Insert Into @Stud Values ( 6, 33 )
Insert Into @Stud Values ( 7, 27 )
Insert Into @Stud Values ( 8, 10 )
Insert Into @Stud Values ( 9, 4 )
Insert Into @Stud Values ( 10, 7 ) Declare @Result Table ( AgeGrp Varchar(100), AgeCount int ) Declare @FromAge int, @ToAge int
Declare @Count int Set @Count = 3
Set @FromAge = 1
Set @ToAge = 1 WHILE(@ToAge <= 100 )
BEGIN
Set @ToAge = @FromAge + @Count – 1 INSERT @Result
Select Convert(Varchar,@FromAge) + ‘ – ‘ + Convert(Varchar,@ToAge) ,
Count(1) From @Stud Where Age Between @FromAge AND @ToAge Set @FromAge = @ToAge + 1 END
Select * From @Result Knowledge is not Power !!!
But When its acted upon then its Power !!!
Hi,
Actually I am doing this in Reporting services and I need the @FromAge and @ToAge values to check with my actual table. But your query is not the only one I am looking for.
I can do the same with a select statement like:
select Min(Age),Max(Age) from tblAge group by Floor(Age/@Count)
where @Count is the interval for the grouping.But that is not working fine when the count is 2 0r three.
It is giving correct group when I do it with your query,thanks ….
But my question, How can I get the other values , like scores, from my big table according to this grouping???
Can I do all of these in a single procedure ?? thanks..

Can you post your table structure with some sample data and desired result ?<br /><br />BTW you can do all the things in single Procedure. <img src=’/community/emoticons/emotion-1.gif’ alt=’:)‘ /><br /><br /><br /><br />Knowledge is not Power !!!<br />But When its acted upon then its Power !!!
Is this what you are looking for? Declare @Stud Table ( Rno int, Age int )
Insert Into @Stud Values ( 1, 10 )
Insert Into @Stud Values ( 2, 11 )
Insert Into @Stud Values ( 3, 8 )
Insert Into @Stud Values ( 4, 5 )
Insert Into @Stud Values ( 5, 25 )
Insert Into @Stud Values ( 6, 33 )
Insert Into @Stud Values ( 7, 27 )
Insert Into @Stud Values ( 8, 10 )
Insert Into @Stud Values ( 9, 4 )
Insert Into @Stud Values ( 10, 7 ) DECLARE @interval int
SET @interval = 10 SELECT (Age / @interval * @interval) as [From], (Age / @interval)* @interval + @interval -1 as [To] , Count(*) As [Count]
FROM @Stud
GROUP BY (Age / @interval * @interval), (Age / @interval)* @interval + @interval -1 Roji. P. Thomas
Microsoft SQL Server MVP
http://toponewithties.blogspot.com

My goal is to change the given stored procedure so that I can find out the different age gorup according to users parameter and find out sumof these values for that group:
s.TVmins, s.Notional$, COUNT(*) AS Qty, SUM(s.TVmins) AS TVMinsAmt, SUM(s.Notional$) AS NotionalAmt
For that I am planning to put another parameter @count for the group interval and I need to group accordingly.
So my answer should look like:
if the user gave the @count value as 10:
the result should: age group TVMins Notional 1-9 1560 125632( the sum of that particluar group)
10-19 — —

91-100 — —
———————————————–
ALTER PROCEDURE [dbo].[sp_PlanningData]
@ProgrammeID numeric,
@RegionID numeric,
@SiteID numeric,
@COCGroup varchar(50),
@Provider varchar(50),
@Schedule varchar(50),
@StartDate datetime,
@EndDate datetime
AS
BEGIN
— SET NOCOUNT ON added to prevent extra result sets from
— interfering with SELECT statements.
SET NOCOUNT ON; DECLARE
@sqlnvarchar(4000),
@paramlistnvarchar(4000) SELECT @sql = ‘SELECT
dm.DOB,
dm.Suburb,
vs.RID,
s.TVmins,
s.Notional$,
COUNT(*) AS Qty,
SUM(s.TVmins) AS TVMinsAmt,
SUM(s.Notional$) AS NotionalAmt FROM dbo.lkpService s
INNER JOIN dbo.tmpValidServices_ALL vs ON s.Code = vs.Service
INNER JOIN dbo.tmpDemographics_ALL dm ON dm.RID = vs.RID ‘ IF @COCGroup IS NOT NULL
SELECT @sql = @sql + ‘LEFT OUTER JOIN dbo.lkpCOC c ON vs.COC = c.pvcode ‘ IF @ProgrammeID IS NOT NULL
SELECT @sql = @sql + ‘LEFT OUTER JOIN dbo.lkpAgency ag ON vs.SiteID = ag.EXACT# ‘ SELECT @sql = @sql + ‘WHERE s.Schedule = @Schedule ‘ IF @StartDate IS NOT NULL
SELECT @sql = @sql + ‘ AND (vs.Complete >= @StartDate ) ‘ IF @EndDate IS NOT NULL
SELECT @sql = @sql + ‘ AND (vs.Complete <= @EndDate ) ‘ IF @ProgrammeID IS NOT NULL
SELECT @sql = @sql + ‘ AND (ag.AgencyTypeID = @ProgrammeID)’ IF @SiteID IS NOT NULL
SELECT @sql = @sql + ‘AND (ag.EXACT# = @SiteID) ‘ IF @COCGroup IS NOT NULL
SELECT @sql = @sql + ‘ AND (c.pvcode = @COCGroup OR c.pvcode IN (SELECT COC FROM lkpCOCGroup WHERE COCGroup = @COCGroup)) ‘ IF @Provider IS NOT NULL
SELECT @sql = @sql + ‘AND (vs.Provider = @Provider) ‘ SELECT @sql = @sql + ‘GROUP dm.Suburb,vs.RID, s.TVmins, s.Notional$ ‘ SELECT @paramlist =
‘@ProgrammeIDnumeric,
@RegionIDnumeric,
@SiteIDnumeric,
@COCGroupvarchar(50),
@Providervarchar(50),
@Schedule varchar(50),
@StartDatedatetime,
@EndDatedatetime ‘ EXEC sp_executesql @sql,@paramlist,@ProgrammeID,@RegionID,@SiteID,@COCGroup,@Provider,@Schedule,@StartDate,@EndDate END
——————————————————- Hope this will help.. it is really urgent one.. I am trying my best to find it out..
Thanks for your help..
FYI….
The solution for this can be viewed at : http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=694652&SiteID=1&mode=1 Thank you for your response…
]]>