示例:
select c_id,'VIP Customer' [Customer Level] from customer where ...
联合
select c_id,'Regular Customer' [Customer Level] from customer where ...
如果c_id
是第一级(VIP)的一部分,则不能是第二级(常规)。我正在使用Union它不工作,因为第二列数据不同。
有人可以建议吗?
答案 0 :(得分:0)
我不确定您使用的是哪种SQL变体,但您可能会发现查看' case'表达式而不是联合,请参阅:
答案 1 :(得分:0)
如果结果ID包含在第一个查询中,您可以检查。所以像这样:
SELECT c_id,'VIP Customer' [Customer Level] from customer where [CONDITION]
UNION
(select c_id,'Regular Customer' [Customer Level]
from customer where [SECOND_CONDITION] AND
c_id not in
(SELECT c_id,'VIP Customer' [Customer Level] from customer where [CONDITION]))
答案 2 :(得分:0)
所以你变得像......
1,'VIP'
1,'常规'
如果是这样,我不确定where子句是否100%完成。如果它发现同一客户是多种类型,那可能是一个红旗。如果客户被保存为多个类型,那么case语句可能是在这种情况下而不是联合的方式。
select c_id, case when... then 'VIP' when... then 'Regular' end
答案 3 :(得分:0)
这是错误的客户端查询。
select A.RC_id
from (
select c_id RC_id
from customer
where 'Regular Customer' criteria) A
inner join (
select c_id VIP_id
from customer
where 'VIP Customer' criteria) B
on A.RC_id=B.VIP_id
或者你可以在客户端上应用这两个标准,我认为这是最短的解决方案
select c_id
from customer
where ('VIP Customer criteria' AND 'Regular Customer criteria')
答案 4 :(得分:0)
CASE似乎是一个不错的解决方案,如果需要,您还可以添加更多客户级别。
select c_id, [Customer Level] =
CASE
WHEN ... THEN 'VIP Customer'
ELSE 'Regular Customer'
END
from customer
有关MSDN上的CASE的更多信息:https://msdn.microsoft.com/en-us/library/ms181765.aspx