如何在Veeva查询语言(VQL)中获取唯一的Product Family记录?
VQL获取关联内容计划的唯一产品系列方法
解决子查询报错问题
你之前的子查询报错是因为关联字段写法不符合Veeva Vault的VQL规则,关联对象的引用字段需要用[关联对象名]__vr.id格式,而非直接写对象名。修正后的子查询语句如下:
SELECT id, name__v, status__v FROM product__v WHERE id IN (SELECT product__vr.id FROM edl__v WHERE parent__v IS NULL)
替代SQL DISTINCT的两种方案
方案1:GROUP BY聚合
利用GROUP BY对产品系列的唯一标识及所需字段进行聚合,确保每个产品系列仅返回一条记录:
SELECT product__vr.id, product__vr.name__v, product__vr.status__v FROM edl__v WHERE parent__v IS NULL AND product__vr.name__v IS NOT NULL GROUP BY product__vr.id, product__vr.name__v, product__vr.status__v
Vault的VQL允许GROUP BY包含非聚合字段,只要这些字段与GROUP BY的主键一一对应,刚好适配产品系列字段的唯一性需求。
方案2:EXISTS子查询
通过EXISTS子查询直接过滤出至少关联一个内容计划的产品系列,结果天然唯一:
SELECT id, name__v, status__v FROM product__v WHERE EXISTS ( SELECT id FROM edl__v WHERE edl__v.product__vr.id = product__v.id AND edl__v.parent__v IS NULL )
额外说明
如果你的Vault版本较新,可以直接尝试使用DISTINCT关键字(部分新版本VQL已支持该语法):
SELECT DISTINCT product__vr.id, product__vr.name__v, product__vr.status__v FROM edl__v WHERE parent__v IS NULL AND product__vr.name__v IS NOT NULL
内容的提问来源于stack exchange,提问作者Arvind Agrahari
相关产品推荐
相关产品推荐

