首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在上一列满足一定条件时使用SQL选择下一列

如何在上一列满足一定条件时使用SQL选择下一列
EN

Stack Overflow用户
提问于 2017-11-17 23:04:30
回答 2查看 60关注 0票数 0

我在Impala上使用SQL

我正在查询的桌子看起来就像

客户名称shop1 shop1number shop2 shop2number shop3 shop3number

TOM AB 111 AA 231 AC 321

艾米AC 121 AB 213 AD 231

法兰克AD 123 AE 233 AB 234

在这里输入图像描述这里的数字是顾客忠诚度号码,而挑战是,如果我在寻找商店1 (AB)的忠诚度号码,我不知道它在哪一列,因为当客户填写他们的忠诚度号码时,他们会选择按他们的个人资料按任何顺序输入这个号码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-18 05:35:07

如果我对您的理解是正确的,您将查找与商店相关的所有忠诚度数字,因此一种方法可能是首先使用union all将行数据带到列中,然后搜索一个商店,比如AB

代码语言:javascript
复制
select * from
(
select customername, shop1 as shop, shop1number as shopnumber
from table1
union all
select customername, shop2 as shop, shop2number as shopnumber
from table1
union all
select customername, shop3 as shop, shop3number as shopnumber
from table1
    ) t
where t.shop = 'AB';

结果:

代码语言:javascript
复制
+--------------+------+------------+
| customername | shop | shopnumber |
+--------------+------+------------+
| AMY          | AB   |        213 |
| TOM          | AB   |        111 |
| Franck       | AB   |        234 |
+--------------+------+------------+

演示

票数 0
EN

Stack Overflow用户

发布于 2017-11-18 06:50:06

代码语言:javascript
复制
declare @shop varchar(10)
set @shop='AB'
select cname, 
case when  shop1=@shop then shop1 
when shop2=@shop then shop2
when shop3=@shop then shop3
end
as shop, 
shop1number as shopnumber
from tblcus
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47360561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档