请您支持下面的问题,我试图在sql查询中根据条件值填充一个新列。
伪代码:
IF ap_id exists in visit_table and visit_type = 'first'
then firs_tvisit_id = visit_table.visit_id and first_visit_user = visit_table.Username
第二次和第三次访问的逻辑相同。
这是你的table。
这是apu表(键值在哪里):
下面是预期的表格。
sql能够进行这种数据操作,如果有的话我怎么能得到这个。
我试过左连接、内连接和外连接。然而,我无法创建一个新的列,并填充在一个条件的基础上。
3条答案
按热度按时间ltqd579y1#
一种方法是多重的
join
学生:k0pti3hp2#
您可以加入并执行条件聚合:
mhd8tkvw3#
看起来您这里有一些潜在的数据问题,必须得到正确解决。更具体地说,如果visit\u表中有多条记录的ap\u id和visit\u类型相同,该怎么办?或者我们应该假设这两列上有一个唯一的键吗?
这个问题的最佳答案实际上可能取决于您所使用的sql的风格以及您真正想要做的事情的细微差别。例如,postgresql能够在不需要分组的情况下“选择不同的”列。oracle、sqlserver和其他一些工具能够使用with子句简化复杂的查询。如果其他方法失败,您可以编写嵌套查询,尝试在一个monster查询中获取所有内容。
如果您能够使用临时表或表变量,则最好根据需要将信息选择到构造的表中。如果需要3次以上的访问,则可能需要编写动态sql。如果这是您希望随时可供其他查询访问的信息,您可以考虑将其编写为视图。
关于简单地选择min(访问id)和min(用户名)进行查询的一个简短说明-如果您有多个分组行,您很可能会从一次访问中获得的id与另一次访问的用户名不正确地配对。
下面尝试为3种访问类型创建一个monster查询,包括: