如何使用SQL Query获取虚拟行?

时间:2015-10-09 04:15:57

标签: oracle

我有一个要求,我必须根据条件获取一些行,除此之外,输出中还有2行将是*,其他将是一个空行。我正在使用Union的方法来增加2个额外的行 查询:

a.btn {
  background-color: transparent;
}
a.btn:hover {
  border: 2px solid #000;
  background-color: #f00;
}

在上面的查询中,前2个从表中选择PROMO_GROUP给我一个空白行和一个带*值及以下的行,我正常选择根据条件从表PROMO_GROUP中检索数据。 有没有其他最佳方式可以实现这一目标?

3 个答案:

答案 0 :(得分:1)

如果您只想在查询中执行此操作,这是最好的方法。您应该从前两个查询中删除from promo_group部分

但是,如果可以的话,您应该在代码而不是查询中处理此问题

答案 1 :(得分:1)

您需要使用没有FROM子句的SELECT子句创建每个虚拟行(或者在Oracle中,从特殊DUAL表创建,因此它只生成一行),并使用实际查询对这两个虚拟行进行UNION创建。像这样:

SELECT '' as PROMO_GRP_CD , '' as PROMO_GRP_DESC,  '' as PROMO_GRP_ALT_DESC FROM DUAL
UNION  
SELECT '*' as PROMO_GRP_CD , 'All' as PROMO_GRP_DESC,  'Tous' as PROMO_GRP_ALT_DESC FROM DUAL
UNION  
SELECT PROMO_GRP_CD,PROMO_GRP_DESC,PROMO_GRP_ALT_DESC from PROMO_GROUP
WHERE ACC_TYPE = '*' and ACC_SUB_TYPE = '*' and SUBMARKET = '*'

答案 2 :(得分:0)

您可以使用两条记录追加返回的结果(向数组添加两个元素)。结果将是相同的,您不会有{{1}}的开销。

当然,您没有指定用于运行查询的语言。我假设你的语言允许这样做。