所以这是我需要的一个问题,我需要一个客户类型等于两个不同的东西。
为了满足要求,我不需要客户类型等于客户端,或非客户端,但客户端和Non_Client。
这是我迄今为止所做的工作的一个例子。如果您知道更好的优化方法以及解决问题,请告诉我。
输出应该看起来像这样
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
Where IB1.Client = 'Client'
AND IB1.Non_Client = 'NonClient'
我省略了一些我认为不必要的其他过滤器。这也可能没有意义,但我试图更改内容的名称以保持自己的合规性。
答案 0 :(得分:0)
使用条件聚合,您可以这样做:
select type from TableName
group by type
having sum(case when client = 'Client' then 1 else 0 end) >= 1 and
sum(case when client = 'NonClient' then 1 else 0 end) >= 1
答案 1 :(得分:0)
您可以这样做:
Select TB1.Customer_ID, IB1.Customer_Type AS Non_client IB2.Customer_Type AS Client
From Client TB1
Inner join Client_ReF XB1 ON(TB1.Client_NO = XB1.Client_NO)
Inner join Client_XREC FB1 ON(FB1.Customer_ID= TB1. Client_NO AND FB1.Client_ACCT = TB1.ACCT)
Inner join Client_Instr IB1 ON(XB1.Client_Instruct_NO = IB1.Client_Instruct_NO)
Inner join Client_Instr IB2 ON(XB1.Client_Instruct_NO = IB2.Client_Instruct_NO),
Where IB1.Client = 'Client'
AND IB2.Non_Client = 'NonClient'
注意:
Client_Instr
表使用两次不同的别名。 答案 2 :(得分:-1)
如果这是在sql中你会做类似的事情:
SELECT * from clients c
WHERE c.client = 'Client' AND c.client = 'NonClient'
我仅为示例添加了表客户端,但您需要将此表/列替换为适用于您的示例的值。