SQL交叉应用与其他信息

SQL交叉应用与其他信息,sql,sql-server,Sql,Sql Server,我有一张和这张相似的桌子 ID | InvoiceNum | Client1 | Client2 | Client3 1 123 Test2 2 1234 Abc Test1 3 12345 TestC 我想搜索所有3个客户机字段,然后返回到一个列,其中包含它来自哪个字段的一些附加信息 ID | InvoiceNum | Client | Position 1 12

我有一张和这张相似的桌子

ID | InvoiceNum | Client1 | Client2 | Client3 
1    123          Test2
2    1234         Abc                 Test1  
3    12345                  TestC
我想搜索所有3个客户机字段,然后返回到一个列,其中包含它来自哪个字段的一些附加信息

ID | InvoiceNum | Client | Position
1    123          Test2    1
2    1234         Test1    3
3    12345        TestC    2
这是我的SQL查询

Select id, invnum ,Client
From myTable A
Cross Apply (values (client1) ,(client2) ,(client3) ) B(Client)
Where Client like '%test%'
ORDER BY invnum

使用交叉应用,我可以将所有内容都放到一列中,但不确定是否/如何获得该职位?

只需将其添加到
值中即可:

Select a.id, a.invnum, b.Client, b.position
From myTable A Cross Apply (values (client1, 1) ,(client2, 2), (client3, 3)
    ) B(Client, position)
where Client like '%test%'
order by a.invnum

只需将其添加到
值中即可:

Select a.id, a.invnum, b.Client, b.position
From myTable A Cross Apply (values (client1, 1) ,(client2, 2), (client3, 3)
    ) B(Client, position)
where Client like '%test%'
order by a.invnum