需要 return 来自单个字段的多个条目 Table

Need to return multiple entries from a single field in One Table

所以这就是问题所在我有一个要求,我需要一个客户类型来等于两个不同的东西。

为了满足要求,我不需要客户类型等于客户,或非客户但等于客户,以及 Non_Client。每个 Customer_No 可以有多个客户类型

这是我迄今为止所做工作的示例。如果您知道优化此问题以及解决问题的更好方法,请告诉我。

输出应该是这样的

 CustomerID  CustomerType  CustomerType 
 --------------------------------------
 2345        Client        NonClient


Select TB1.Customer_ID, IB1.Customer_Type, AS Non_client IB1.Customer_Type AS Client
From Client TB1, Client_ReF XB1, Client_Instr IB1, Client_XREC FB1
Where XB1.Client_NO = TB1.Client_NO
AND FB1.Client_ACCT = TB1.ACCT
AND XB1.Client_Instruct_NO = IB1.Client_Instruct_NO
AND FB1.Customer_ID= TB1. Client_NO
AND IB1.Client = 'Client' 
AND IB1.Non_Client = 'NonClient'

我省略了其他一些我认为不必要的过滤器。这也可能没有意义,但我试图更改东西的名称以保持合规性。

首先是一个小语法错误:

"AS Non_client "

前不能有逗号

那么您要做的是使同一列的 1 个值等于 2 个不同的值,这永远不可能是真的:

1 条记录的

IB1.Customer_Type 永远不能同时等于 "Client" 和 "NonClient"。

这里的关键是1个客户可以有多个记录,并且customer_type中的记录可以不同。因此,要使用它,我们需要将这些记录连接在一起,这很容易,因为它们共享 Customer_ID:

Select TB1.Customer_ID, 
       IB1.Customer_Type AS Client, 
       IB2.Customer_Type AS Non_client
  From Client TB1, 
       Client_ReF XB1, 
       Client_Instr IB1, 
       Client_Instr IB2,
       Client_XREC FB1 
 Where XB1.Client_NO = TB1.Client_NO
   AND FB1.Client_ACCT = TB1.ACCT 
   AND XB1.Client_Instruct_NO = IB1.Client_Instruct_NO 
   AND FB1.Customer_ID= TB1.Client_NO 
   AND IB1.Client = 'Client'  
   AND XB1.Client_Instruct_NO = IB2.Client_Instruct_NO 
   AND IB2.Non_Client = 'NonClient';

由于我没有完全理解您的数据和结构,以上内容可能实际上不起作用,但应该会让您走上正确的道路。特别是在 IB2 与 XB1 的连接周围,您可能必须将 IB2 与所有与 IB1 相同的表连接起来。

然而,比这更好的方法是使用 EXISTS 语句,我会留给您研究它。不同之处在于,上面将把同一客户的所有记录连接在一起,而如果至少有 1 个 "NonClient" 记录实例,则只会满足 EXISTS。