【发布时间】:2020-02-22 03:03:41
【问题描述】:
在 SQL Server 中工作
我有 3 张桌子
[TESTDB].[dbo].[TestList]
[Routing].[dbo].[WUList]
[Routing].[dbo].[WUArea]
[TESTDB].[dbo].[TestList] 数据看起来像
TestID
1089
41651
1235
6987
51555
71666
[Routing].[dbo].[WUList] 数据看起来像
TestIDS AreaPerson1 AreaPerson2 AreaPerson3
01089 TSmith MBlevins OMyhead
01099 RJohns NULL NULL
03368 RJohns TPayne MSmith
45646 TSmith MBlevins NULL
55566 NULL MBlevins WRestle
77788 ORandy NULL LOrdy
02347 MArt TPayne MSmith
03333 NULL NULL NULL
04444 NULL NULL NULL
[Routing].[dbo].[WUArea] 数据看起来像
Area AreaPerson1 AreaPerson2 AreaPerson3
01 ORandy MBlevins OMyhead
03 RJohns SNicks IPfreely
04 RJohns MBlevins BFort
07 TSmith SNicks BFort
41 MArt TSmith WRestle
45 ORandy ORandy ORandy
51 ... ... ...
52 ... ... ...
71 ... ... ...
我已经能够将 [TestList] 加入 [UWArea] 或 [WUList] 我需要的数据显示方式,但我无法以我需要的方式加入 3 个列表。
- 并非每个 TestID 都出现在 [WUList] 或 [WUArea] 中
- 如果 TestID 出现在 [UWList] 中,则并非每一列都包含一个值
- [WUList]中出现一些TestID,[WUList]中的每一列都包含NULL
最终目标
常见的联接字段为 [TestList].[TestID]、[WUList].[TestIDS] 和 [WUArea].[Area]
返回列 [TestID]、[AreaPerson1]、[AreaPerson2]、[AreaPerson3]
将[TestList]加入[WUList]时,如果有任何'persons'返回NULL,则将[TestID]的前两位数字加入[WUArea]。[Area]并获取对应的“人”
**[TestList].[TestID] 为 4 位数字,在加入 [WUArea].[Area] 时,应在左第 1 位附加 0。 [TestID] 长度为五位,可以使用 LEFT 两位数连接
如果[TestList].[TestID]没有出现在[WUList]中或者[TestList].[TestID]的左2位没有出现在[WUArea]中,设置[AreaPerson1]=JDoe,[ AreaPerson2] = SDoe,[Areaperson3] = TBuck
这个让我夜不能寐。您的帮助将不胜感激。
【问题讨论】:
标签: sql sql-server join conditional-statements