Reporting Services中的SQL聚合

Reporting Services中的SQL聚合,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在使用ingres数据库将报表从powerbuilder迁移到MS Reporting Services。我有以下数据集: Code| Code Description | Carer_Id| Child_id | Child_age ======================================================= 738 Workflow 1234 2345 10 738 Workflow

我正在使用ingres数据库将报表从powerbuilder迁移到MS Reporting Services。我有以下数据集:

Code| Code Description | Carer_Id| Child_id | Child_age
=======================================================
738  Workflow           1234       2345        10
738  Workflow           1234       2346        15
739  Estimate           1235       2367        10
powerbuider报告使用内置函数运行total以输出以下数据:

code | Code Description | carer | child | age 0 < 10 | age 10 > 15
738   Workflow             1        2        1          1
==================================================================
739   Estimate             1        1        1          0
code | code Description | carer | child | 0岁<10岁| 10岁>15岁
738工作流程1 2 1
==================================================================
739估计数10
基本上,要求是显示照料者的总数、按代码分组的儿童(按代码分组),但也要显示10岁以下儿童的总数,以及按代码分组的10岁及以上儿童的总数

我的问题是如何在T-SQL2005或SSRS中获得相同的结果?我可以得到看护者id和孩子id的不同计数,然后将它们分组,得到看护者和孩子的总数,但我不能得到年龄?如果可能,我不想使用游标。我应该使用CTE吗? 如果您有任何建议,我们将不胜感激。 提前感谢。

选择code,
SELECT  Code,
        [Code Description],
        COUNT(DISTINCT carer_ID) Carer,
        COUNT(DISTINCT Child_ID) child,
        SUM(CASE WHEN Child_Age BETWEEN 0 AND 10 THEN 1 ELSE 0 END) [age 0 < 10],
        SUM(CASE WHEN Child_Age BETWEEN 11 AND 15 THEN 1 ELSE 0 END) [age 10 > 15]
FROM    TableName
GROUP   BY Code, [Code Description]
[代码说明], 计数(不同的护理者ID)护理者, 计数(不同的子项ID)子项, 总和(如果儿童年龄在0到10岁之间,则为1岁,否则为0岁)[0岁<10岁], 总和(当儿童年龄在11到15岁之间时,则为1,否则为0)[10岁>15岁] 从表名 按代码分组[代码说明]
输出

╔══════╦══════════════════╦═══════╦═══════╦════════════╦═════════════╗
║ CODE ║ CODE DESCRIPTION ║ CARER ║ CHILD ║ AGE 0 < 10 ║ AGE 10 > 15 ║
╠══════╬══════════════════╬═══════╬═══════╬════════════╬═════════════╣
║  738 ║ Workflow         ║     1 ║     2 ║          1 ║           1 ║
║  739 ║ Estimate         ║     1 ║     1 ║          1 ║           0 ║
╚══════╩══════════════════╩═══════╩═══════╩════════════╩═════════════╝
╔══════╦══════════════════╦═══════╦═══════╦════════════╦═════════════╗
║ 代码║ 代码描述║ 看护人║ 小孩║ 年龄0岁<10岁║ 年龄10岁以上15岁║
╠══════╬══════════════════╬═══════╬═══════╬════════════╬═════════════╣
║  738║ 工作流程║     1.║     2.║          1.║           1.║
║  739║ 估计║     1.║     1.║          1.║           0║
╚══════╩══════════════════╩═══════╩═══════╩════════════╩═════════════╝
选择代码,
[代码说明],
计数(不同的护理者ID)护理者,
计数(不同的子项ID)子项,
总和(如果儿童年龄在0到10岁之间,则为1岁,否则为0岁)[0岁<10岁],
总和(当儿童年龄在11到15岁之间时,则为1,否则为0)[10岁>15岁]
从表名
按代码分组[代码说明]
输出

╔══════╦══════════════════╦═══════╦═══════╦════════════╦═════════════╗
║ CODE ║ CODE DESCRIPTION ║ CARER ║ CHILD ║ AGE 0 < 10 ║ AGE 10 > 15 ║
╠══════╬══════════════════╬═══════╬═══════╬════════════╬═════════════╣
║  738 ║ Workflow         ║     1 ║     2 ║          1 ║           1 ║
║  739 ║ Estimate         ║     1 ║     1 ║          1 ║           0 ║
╚══════╩══════════════════╩═══════╩═══════╩════════════╩═════════════╝
╔══════╦══════════════════╦═══════╦═══════╦════════════╦═════════════╗
║ 代码║ 代码描述║ 看护人║ 小孩║ 年龄0岁<10岁║ 年龄10岁以上15岁║
╠══════╬══════════════════╬═══════╬═══════╬════════════╬═════════════╣
║  738║ 工作流程║     1.║     2.║          1.║           1.║
║  739║ 估计║     1.║     1.║          1.║           0║
╚══════╩══════════════════╩═══════╩═══════╩════════════╩═════════════╝