ورود

View Full Version : مشکل در گرفتن یک Query



FatemehB
یک شنبه 21 اسفند 1384, 11:01 صبح
سلام دوستان

من مشکلی در گرفتن یک Query دارم. فرض کنید که جدولی با سه فیلد نام و سن و تاریخ دارم.
هر سه فیلد نوعشان char هست و تاریخ حاوی اطلاعاتی به صورت 8/8/1384 می باشد.
حالا فرض کنید این جستجو را بخواهیم داشته باشیم :
گروههای مختلف سنی ( 5 -12 سال و 13-20 سال و 21-30 سال و 31-40 سال )
می خواهیم افراد را بر اساس قسمت سال تاریخ یعنی ( substring(date,1,4 گروه بندی کنیم
وتعداد افراد را در هر گروه سنی نمایش دهیم

ممنون میشم کسی بتونه کمکم کنه

Inspiration
یک شنبه 21 اسفند 1384, 12:18 عصر
SELECT ShamsiYear,
'5-12',
SUM(Sumage)
FROM (SELECT LEFT(shamsidate,4) ShamsiYear,
Age,
SUM(CAST(age as int)) SumAge
FROM Tbltest
Group BY left(shamsidate,4),Age ) As tblTmp

WHERE Sumage>4 and SumAge<13
GROUP BY ShamsiYear

UNION

SELECT ShamsiYear,
'13-21',
SUM(Sumage)
FROM (SELECT LEFT(shamsidate,4) ShamsiYear,
Age,
SUM(CAST(age as int)) SumAge
FROM Tbltest
Group BY left(shamsidate,4),Age ) As tblTmp

WHERE Sumage>12 and SumAge<21
GROUP BY ShamsiYear

UNION

SELECT ShamsiYear,
'21=30',
SUM(Sumage)
FROM (SELECT LEFT(shamsidate,4) ShamsiYear,
Age,
SUM(CAST(age as int)) SumAge
FROM Tbltest
Group BY left(shamsidate,4),Age ) As tblTmp

WHERE Sumage>20 and SumAge<31
GROUP BY ShamsiYear


البته من از Derived Table استفاده کردم. در SQL Server2005 می توان از امکانات CTE نیز استفاده کرد

FatemehB
یک شنبه 21 اسفند 1384, 12:51 عصر
خیلی ممنون از جواب سریعتون
امتحان می کنم