【发布时间】:2014-03-31 15:57:55
【问题描述】:
我的任务是创建一个需要从另一个表中引入多达 10 条记录的视图。问题是该表可能有 0、5、10 条或更多对应的记录。
这是非常简化的设计,仅包含相关内容
SalesOrderTable OutsideSalesRepTable SalesRepTable
OrderID BranchID SalesRepID
CustID CustID SalesRepName
BranchID SalesRepID
第一个连接需要在 BranchID 和 CustID 上的 SalesOrderTable 和 OutsideSalesRepTable 之间 第二个联接需要在 SalesRepID 上的 OutsideSalesRepTable 和 SalesRepTable 之间
视图需要将列列为OutsideSalesRep1、OutsideSalesRep2、...OutsideSalesRep10,并用SalesRepName 填充。我无法控制这个数据库的设计。我宁愿在客户表中看到 10 个专用于 SalesRepID 的字段,并且只使用左连接。
如果只有 3 个OutsideSalesReps 存在于分支机构/客户,那么OutsideSalesRep4-10 应该为空
这是 165 列/35+ 表视图中我无法弄清楚的唯一部分。
任何帮助将不胜感激。
PS 我对 TSQL 还很陌生。才用了6个月左右。
编辑:我链接到显示源数据样本的图像,以帮助(我希望)解释我在寻找什么。 数据透视表需要显示
SONum OutsideRep1 OutsideRep2 OutsideRep3 ..... Outside Rep10
5819 59 69 70 null null
5821 59 70 null null null
【问题讨论】:
-
您需要pivot query,因为您试图将salesrep 表中的单个列转换为查询结果中的多个列。
-
所以我已经尝试了几种不同的方法,这可能是我的无知,但我无法以我需要的方式查询 Pivot。如果我在 Pivot 的“IN”子句中指定了 SalesRepName 或 ID,我可以将它发送到 Pivot,但我不知道这些值是什么。
标签: sql sql-server tsql join