【发布时间】:2011-07-05 06:35:21
【问题描述】:
我需要将一个标题表和六个详细信息表组合成一个结果。为了演示,我创建了一个非常简单的示例,如下所示:
DECLARE @MyHeader TABLE (HeaderPK int, Name varchar(100), Total smallmoney) 插入@MyHeader(HeaderPK,名称,总计) 选择 1,“ABC 公司”,1600 DECLARE @MyDetail1 TABLE (Detail1PK int, HeaderFK int, Detail1Description varchar(100), Detail1Amount smallmoney) 插入@MyDetail1(Detail1PK、HeaderFK、Detail1Description、Detail1Amount) 选择 1, 1, '详细信息 1A', 100 UNION SELECT 2, 1, '详细信息 1B', 300 声明@MyDetail2 TABLE(Detail2PK int,HeaderFK int,Detail2Description varchar(100),Detail2AmountA smallmoney,Detail2AmountB smallmoney) 插入@MyDetail2(Detail2PK、HeaderFK、Detail2Description、Detail2AmountA、Detail2AmountB) 选择 1, 1, '详细信息 2A', 100, 100 UNION SELECT 2, 1, '详细信息 2B', 200, 200 UNION SELECT 3, 1, '详细信息 3C', 300, 300 -- 返回 2 行,预期为 2 选择 我的标题。* ,MyDetail1.* 从 @MyHeader 我的标题 在 MyHeader.HeaderPK = MyDetail1.HeaderFK 上完全加入 @MyDetail1 MyDetail1 订购方式 我的Detail1.Detail1PK -- 返回 6 行,预期为 3 选择 我的标题。* ,MyDetail1.* ,MyDetail2.* 从 @MyHeader 我的标题 在 MyHeader.HeaderPK = MyDetail1.HeaderFK 上完全加入 @MyDetail1 MyDetail1 在 MyHeader.HeaderPK = MyDetail2.HeaderFK 上完全加入 @MyDetail2 MyDetail2注意事项:
- MSSQL 2008R2
- 每个详细信息表将有大约 0 到 15 条记录。
在示例中,详细信息表具有相似的结构。在生产系统中,它们是非常不同的。
【问题讨论】:
标签: sql-server sql-server-2008