作为我的归因建模设置的一部分,我需要将order_id分配给在分配的事务之前但在之前的任何订单之后发生的交互。
示例,我有一个这样的表:
我希望有这样的事情:
因此填写order_id为空的位置。
我尝试过使用自联接并调用order_id,其中时间是< =而不是第二次连接的时间但没有运气,这会复制某些行。
编辑:
这是我的SQL尝试:
select
c.cookie_id,
c.order_id,
c.channel,
c.min_report_timestamp
,case when lead(c.cookie_id) over (order by min_report_timestamp desc) is null then c.order_id else c.order_id end as order_id_ok
,lead(c.order_id) over (order by min_report_timestamp desc) as lead_order
--,lag(c.order_id) over (order by min_report_timestamp asc) as lag_order
from table c
group by 1,2,3,4
我对我应该使用的条件有一个想法,问题是我不能用我需要的order_id填充缺少的空格,它不会逐行“携带”订单ID
答案 0 :(得分:1)
package rtp.qt;
编辑:更改了表的名称以反映OP中的名称并删除了最终查询中的额外列。
答案 1 :(得分:1)
考虑相关的聚合子查询而不需要窗口函数:
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
ResourceManager objResourceManager = new ResourceManager(assembly.GetName().Name + ".g", assembly);
ResourceSet objResourceSet = objResourceManager.GetResourceSet(CultureInfo.CurrentCulture, true, true);
List<ImageAndDescription> imageAndDescriptions = new List<ImageAndDescription>();
foreach (System.Collections.DictionaryEntry entry in objResourceSet)
{
string filePath = Uri.UnescapeDataString(entry.Key.ToString());
if(filePath.StartsWith(folderPath.ToLower())
imageAndDescriptions.Add(new ImageAndDescription(entry.Value, entry.Key.ToString()));
}