当前位置: 首页 > 知识库问答 >
问题:

根据其他列的标记/值选择不同的值

辛麻雀
2023-03-14

我有一个表,它有4列(customer、gender、division、product)gender具有与每个客户链接的唯一值:malemalenull

该部门与每种产品(男性或女性)都有独特的价值

我做了一个复杂的过程。首先,使用客户信息将male和其他客户分开(创建了两个表CUST_MALEY和cust_other)

如果CUST_MALEY表中有客户,则使用join,返回men division products行(其中division='men');如果cust_other表中的客户,返回women division products行(其中division='women'),然后'union all'两部分。

希望我能有一个非常简单的方法或代码来解决这个问题。

create table tep (id, gender, division, product) as
(
  select 1, ‘male’, ‘men’, ‘aaa’ from dual
  union all select 2, ‘female’, ‘women’, ’bbb’ from dual
  union all select 2, ‘female’, ‘men’, ‘ccc’ from dual
  union all select 1, ‘male’, ‘women’, ‘ddd’ from dual
  union all select 3, ‘female’, ‘women’, ’ddd’ from dual
  union all select 4, ‘null’, ‘women’, ’eee’ from dual
 union all select 4, ‘null, ‘men, ’ccc’ from dual
);
create table cust_male as
select id from tep where gender='male';

create table cust_other as
select id from tep where (gender ='female') or (gender='null');

select * from tep t
inner join cust_male m
on m.id=t.id
where division ='men'

union all

select * from tep t
inner join cust_other f
on f.id=t.id
where division ='women'

共有1个答案

汝飞
2023-03-14

我想创建一个表,只选择有男性产品的记录/行为男性,只有女性产品为女性(如果性别为空,选择女性产品记录)有什么简单的方法可以做到这一点吗

您希望筛选数据,因此这听起来像where子句:

select tep.*
from tep
where (gender = 'male' and division = 'men') or
      ((gender = 'female' or gender is null) and division = 'women')
 类似资料:
  • 问题内容: 假设我有这张桌子(小提琴可用)。 我按行对行进行分组,对于每个组,我都希望从column中获得一个值。但是,我不需要 任何 值,但是我想从具有maximal的行中获取值,并从所​​有这些中获取具有maximal的值。换句话说,我的结果应该是 当前解决方案 我知道一个查询来实现这一点: 题 但是我认为这个查询 很难看 。主要是因为它使用了一个 依赖的子查询 ,感觉就像是真正的性能杀手。因

  • 问题内容: 我在尝试制作自己的内容时遇到了麻烦,具体取决于其他方面的选择值。第一个的内容来自我的数据库中的一个表,并且运行良好,但是第二个的内容应该来自另一个表,但是我无法使其工作。这是我的,我只是在尝试证明其工作原理: 这是我的Bean部分,应该获取第二个菜单的内容: 我已经为此工作了好几个小时,但还是一无所获,我真的很着急,如果能在这里给我一些帮助,我将不胜感激。非常感谢您:D 问题答案: i

  • 我有以下表在PostgreSQL 11. 我想得到具有col1,col2,col3和col4的不同值的行,如果col1,col2,col3相同,则取col1的第一个值。 期望的输出是: 我试着回答以下问题。 如何将输出限制为每col2,col3.获得一个col1值。。例如,选择col1值:3876,不包括3924。

  • 我有一个python数据框,我使用以下代码将其粘贴到excel工作表中: df.to_excel(作家,列=[周刊,周刊1,周刊2],sheet_name='QTY SLS',启动=5,启动=8,头=假,索引=假) 在数据帧weeknum、Weeknum1和Weeknum2中选择的列是代码前面的输入(例如weeknum=第14周)。因此,这些可能是[‘第16周’、‘第15周’、‘第14周’]作为一

  • 问题内容: 我有下表: 我想做的是选择3条最近的记录(按时间desc),它们的s是不同的。因此,在这种情况下,结果将是:5、4和2。 = 3将被跳过,因为有相同字段的最近记录。 这是我尝试做的事情: 然而,我最终得到的行= 5, 3 ,和 1 而不是5,4,2按预期方式。 有人可以告诉我为什么这个查询不会返回我期望的结果吗?我尝试将ORDER BY更改为ASC,但这只是将返回的行重新排列为1、3、

  • 问题内容: 我有这样的桌子 我需要选择何时类型为0,何时类型为1,何时类型为N … 我怎样才能做到这一点? 问题答案: