【发布时间】:2016-08-28 18:30:53
【问题描述】:
我在这里有点停滞不前。我有一个简单的左外连接到一个返回 ID 的表。
我的代码是
Select distinct TenantID
,Name
,Name2
,TenantNumber
,Cashname
From Tenants
LEFT OUTER JOIN tCash
on TenantNumber = CashNumber
and tMoney.CashName = Tenants.Name2
我的结果集如下:
**TenantID | Name | Name2 | TenantNo | CashName**
100 |MyShop | John's shop | 12345 |John's shop
999 |MyShop | John's Shop | 12345 |John's shop
我的问题:出于所有意图和目的,“John's shop”与“John's Shop”不同 - 我在 TenantNo 和 Name2 上正确地加入了我的钱表,但名称 2 是因大小写而异。
问题:
有没有办法根据区分大小写来区分连接?我不想使用UPPER 或LOWER,因为它会破坏报告的案例。
谢谢!
在下面添加表格信息,请假设所有列都被删除了空格。
tMoney
CashNumnbr | CashName
102504 Bill's Place
102374 Tom's Shop
12345 John's Shop
12345 John's shop
租户
TenantID | Name | Name2 |TenantNumber
1 |MyShop | John's Shop | 12345
2 |MyShop | John's shop | 12345
3 |Shoppee | Bill's Place | 102504
4 | Shop2 | Toms Shop | 102374
由于我想加入以获得 AR 报告的正确租户 ID,因此我想确保我始终引入正确的租户。如果情况不同,我能写什么来区分像约翰的商店这样的情况吗?
【问题讨论】:
-
尝试修剪前导和尾随空格或确认两个值的长度/数据长度
-
我正在修剪 Name2 和 TenantNumber。如上所示,它仍然会产生 2 行。
-
请提供来自 tCash 和租户的数据
-
太糟糕了。如果您能提供帮助,您可能应该更改您的 tCash 列以使用tenantId,而不是商店的名称
-
一个租户可以有多个 Name2 的变体并且有相同的 TenantNumber。因此,对于报告,我们希望引入正确的租户 ID。例如,租约 100、101、102 有租户 John's Shop、John's shop 和 J's Shop。我们可以假设他们都是同一个所有者/租户,所以他们有 = TenantNumber。这可能发生在商业世界中的别名或 DBA 方面。我不喜欢这种理性,但事实就是如此。因此,我知道唯一的名称有 = Tenant#s 但不同的 TenantID...以及不同的租约等。@MartinSmith
标签: sql-server tsql join