【发布时间】:2017-03-24 23:48:28
【问题描述】:
我有一张看起来像这样的桌子......
Tbl1
User OriginalValue NewValue FieldName
MikeS 11 12 Dept
BobL 140 141 Position
JohnS 11 South St 13 South St Address
JenB 9 12 AmountPaid
BillyS 133 132 Seller
这是桌子的样子。如果用户编辑了一条记录,我保存了原始值和新值。现在这就是我想要做的。我需要能够显示文本而不是 ID(数字)。除了(在本例中)AmountPaid 和 Address - 所有值都在 tblDefinition 中,看起来像这样.....
tblDefinition
ID Name Field
9 SomeValue SomeX
10 SomeValue SomeX
11 Accounting Dept
12 Finance Dept
132 Microsoft Seller
133 Apple Seller
140 Manager Position
141 Entry Position
所以我想包含一堆数据来说明 tblDefinition 的样子。我试图以某种方式使用 tbl1 中的字段和 ID 并将其与 tblDefinition 连接以获取文本值。我需要使用 FieldName,因为可能出现在 Original 和 New Values 中的某些值(例如 Fieldname = AmountPaid)在 tblDefinition 中有相应的值,但我实际上需要按原样显示该值 - 在本例中为 9 和 12 .
Select OriginalValue, Newvalue, Field
from tblDefinitions
LEFT JOIN tblDefinitions on (tbl2.OriginalValue = tblDefinitions.ID and tbl2.NewValue=tblDefinitions.ID)
这就是我一直在尝试的方法,但这不会有任何结果 - 我真的很难弄清楚我是否可以在一个查询中执行类似的操作,或者我是否需要为每个字段执行多个联合在 tblDefinitions 或什么中有对应的文本值
编辑。也许像......
Select t2.Name as OriginalValue from
tbl1 t1
inner join tblDefinitions t2 on t2.ID = t1.originalvalue
where field in ('Dept', 'Position', 'Seller')
也许只要我只指定要查找的字段,就不会影响tbl1中的AMOUNT PAID等其他值
【问题讨论】:
-
不可行吗?
标签: sql sql-server tsql select sql-server-2012