Reporting services SSRS 2008和分组列/行

Reporting services SSRS 2008和分组列/行,reporting-services,grouping,rows,Reporting Services,Grouping,Rows,矩阵。。。表格。。。。列表/矩阵。。。列表/表格。。。我不知道。他们没有一个人做我想让他们做的事 所以,我有居民数据。。。姓名、性别、护理级别、房间/位置信息。我有医生的电话号码。所有这些都必须看起来像我的表格,但必须在SSRS中完成 表单如下所示: (电话类型和电话号码可以划分,但如果有意义的话,不必如此。) _______________________________________________________________________________ |过敏:NKA| |

矩阵。。。表格。。。。列表/矩阵。。。列表/表格。。。我不知道。他们没有一个人做我想让他们做的事

所以,我有居民数据。。。姓名、性别、护理级别、房间/位置信息。我有医生的电话号码。所有这些都必须看起来像我的表格,但必须在SSRS中完成

表单如下所示:
(电话类型和电话号码可以划分,但如果有意义的话,不必如此。)

_______________________________________________________________________________ |过敏:NKA| | | |_______________________________________________________________________________| |住户|身份|性别|房间|类型编号| |___________|___________|________________|____________|_________________________| || | | |家555-3242| |金| 123 |女| 420 | 555-1111号牢房| |___________|___________|________________|____________|__其他234-5554_| 我需要在SSRS中重新创建它。我把它放在一个页脚里,用了很多文本框标签、矩形等等来格式化,但是SSRS在对齐和保持大小方面并不是很好。我尝试过使用这个布局选项,但当我部署它们时,它们有时看起来与设计和预览中的大不相同。(有时矩形的右侧没有正确对齐,或者矩形看起来并排,但呈现方式不同,没有重叠,但结果仍然很有趣)我必须重做,这次我尝试在报告末尾使用一个表格,以便如果信息恰好占用两行,它周围的一切都很容易生长

我想做的是在矩阵中使用分组,以电话号码作为“详细信息”重新创建表单的整体效果,并根据过敏反应文本进行列分组,然后根据个人信息进行行分组。但是我似乎不能正确地完成它,一切看起来都很好,除了出于某种原因,它将只列出一个电话号码的细节,我需要一个或多个出现

我将数据设置为如下所示:

(name) (ID) (gender) (roomNumber) (allergies) (phoneType) (phoneNumber) Kim 123 female 410 NKA home 555-3332 Kim 123 female 410 NKA cell 555-2342 Kim 123 female 410 NKA other 555-1111 (姓名)(身份证)(性别)(房间号)(过敏)(电话类型)(电话号码) Kim 123女410 NKA住宅555-3332 Kim 123女410 NKA细胞555-2342 Kim 123女410 NKA其他555-1111 哦。。。我做错了什么?如果我使用一个列表(用于上面的过敏反应文本),里面有一个表,按personInfo/personID/stuff和电话号码分组,作为详细信息,我就无法将个人信息排成一行,这样号码就不会挂在下面

显然,我已经简化了数据,但这是它的总体想法。。。请给我一些建议。就我的一生而言,我搞不懂分组。我需要不同的数据布局吗

非常感谢。。。。。。。。。。。。为了你的时间, 金姆

好的。。。编辑我想我解释错了,因为有人说我的数据需要标准化。这就是我如何设置数据,尝试在personID/个人信息上使用分组,然后使用电话号码作为详细信息

假设我有一个叫做person的基表,它存储了我所有的person信息。然后我有一张叫做电话号码的桌子,上面有我的号码。Person和phone由一个ID关联。然后我有一个过敏表,由personID关联,它有一个过敏ID,其中有过敏文本。左外,加入他们。塔达!这是一个非常大的数据库,我必须检查大量的东西,现在实际提供查询是不可行的。很抱歉所有这些都是简化情况的结果,但它让人明白了我的想法,我仍然无法完成我想要的分组,即使数据如此简单(这就是我请求帮助的内容)

再次感谢


我真的很需要帮助,我今天早上都拿不到。。。所以,让我们忘记上面的过敏部分,让它变得非常简单。我仍然无法将分组用于此人,然后使用电话号码作为详细信息。这里有一些样本数据和资料。。。。由于此报告实际上将用作表单,因此我让用户使用参数选择所需的人员,以便将personID传递到我的查询/存储过程中,我将只返回一个人,但作为示例,我在person表中包含了三个人

这不是实际的结构、数据或查询。。。。这只是我用10分钟的时间来证明我在SSR分组中遇到的问题。。。所以,请不要对db结构或类似的东西发表评论,我只是想如果我提供一些数据在SSRS中使用,我会得到更好的响应。如果我/有人能让它处理这些数据,它就会处理我的真实数据

create table #person ( personID int identity(1,1), name varchar(20), birthdate datetime, gender char(1), roomnumber int primary key (personID) ) create table #phoneNumbers ( phoneID int identity(1,1), personID int, number varchar(8), phoneType varchar(10), foreign key (personID) references #person, primary key (phoneID) ) declare @scope int declare @KimsID int insert into #person (name, birthdate, gender, roomnumber) values ('Mike','11-22-1979','M',22) insert into #person (name, birthdate, gender, roomnumber) values ('Kim','11-12-1985','F',123) set @scope = SCOPE_IDENTITY() set @KimsID = SCOPE_IDENTITY() insert into #phoneNumbers (personID, number, phoneType) values (@scope, '333-2323', 'Home') insert into #phoneNumbers (personID, number, phoneType) values (@scope, '333-1111', 'Cell') insert into #phoneNumbers (personID, number, phoneType) values (@scope, '555-6767', 'Other') insert into #person (name, birthdate, gender, roomnumber) values ('Lizz','7-26-1984','F',4) set @scope = SCOPE_IDENTITY() insert into #phoneNumbers (personID, number, phoneType) values (@scope, '444-4444', 'Home') select #person.personID, name, (datediff(YY, birthdate, getdate()) - case when((month(birthdate)*100 + day(birthdate)) > (month(getdate())*100 + day(getdate()))) then 1 else 0 end) as age, birthdate, gender, roomnumber, number, phoneType from #person left outer join #phoneNumbers on #phoneNumbers.personID = #person.personID --where #person.personID = @KimsID order by #person.name, phoneType drop table #person drop table #phoneNumbers 创建表#个人 ( personID int identity(1,1), 名称varchar(20), 生日日期时间, 性别特征(1), 房间号int 主键(personID) ) 创建表#电话号码 ( 音素整数标识(1,1), 人格智力, 数字varchar(8), 电话类型varchar(10), 外键(personID)引用#person, 主键(音素ID) ) 声明@scope int 声明@KimsID int 在#person(姓名、出生日期、性别、房间号)值中插入('Mike','11-22-1979','M',22) 在#person(姓名、出生日期、性别、房间号)值中插入('Kim','11-12-1985','F',123) set@scope=scope\u IDENTITY() set@KimsID=SCOPE_IDENTITY() 在#phoneNumbers(personID,number,phoneType)值中插入(@scope,'333-2323','Home') 在#phoneNumbers(personID、number、phoneType)值(@scope、, create table #person ( personID int identity(1,1), name varchar(20), birthdate datetime, gender char(1), roomnumber int primary key (personID) ) create table #phoneNumbers ( phoneID int identity(1,1), personID int, number varchar(8), phoneType varchar(10), foreign key (personID) references #person, primary key (phoneID) ) declare @scope int declare @KimsID int insert into #person (name, birthdate, gender, roomnumber) values ('Mike','11-22-1979','M',22) insert into #person (name, birthdate, gender, roomnumber) values ('Kim','11-12-1985','F',123) set @scope = SCOPE_IDENTITY() set @KimsID = SCOPE_IDENTITY() insert into #phoneNumbers (personID, number, phoneType) values (@scope, '333-2323', 'Home') insert into #phoneNumbers (personID, number, phoneType) values (@scope, '333-1111', 'Cell') insert into #phoneNumbers (personID, number, phoneType) values (@scope, '555-6767', 'Other') insert into #person (name, birthdate, gender, roomnumber) values ('Lizz','7-26-1984','F',4) set @scope = SCOPE_IDENTITY() insert into #phoneNumbers (personID, number, phoneType) values (@scope, '444-4444', 'Home') select #person.personID, name, (datediff(YY, birthdate, getdate()) - case when((month(birthdate)*100 + day(birthdate)) > (month(getdate())*100 + day(getdate()))) then 1 else 0 end) as age, birthdate, gender, roomnumber, number, phoneType from #person left outer join #phoneNumbers on #phoneNumbers.personID = #person.personID --where #person.personID = @KimsID order by #person.name, phoneType drop table #person drop table #phoneNumbers
create function fnGetDenormPhoneFromPersonID(@personID int)
returns varchar(8000)
as
begin
    declare @number varchar(8);
    declare @phoneType varchar(10);

    declare @DenormPhone varchar(8000);
    set @DenormPhone = '';

    declare MyCursor cursor for
    select number, phoneType
    from phoneNumbers
    where personID = @personID;

    open MyCursor

    fetch next from MyCursor into @number, @phoneType;

    while @@FETCH_STATUS = 0
    begin
        set @DenormPhone = @DenormPhone + @phoneType + '   ' + @number + ';'
        fetch next from MyCursor into @number, @phoneType;
    end

    close MyCursor
    deallocate MyCursor

    return @DenormPhone

end
    select  person.personID, 
    name, 
    (datediff(YY, birthdate, getdate()) -
        case
            when((month(birthdate)*100 + day(birthdate)) >
                (month(getdate())*100 + day(getdate()))) 
            then 1
        else 0
        end) as age,
    birthdate, 
    gender, 
    roomnumber,
    dbo.fnGetDenormPhoneFromPersonID(personID) as DenormPhone

from    person 
=Replace(Fields!DenormPhone.Value, ";", vbCRLF)