Sql 以给定的比例分配两个选择

Sql 以给定的比例分配两个选择,sql,oracle,Sql,Oracle,我有两个表,其中包含以下数据 表“第1组”: 表“第2组”: 我有一个给定的3:1的配给,这应该是一个混合的群体 结果将是: id -- 101 102 103 201 104 105 理想情况下,当其中一组为空时,混合停止 我已经实现了一个面向对象的解决方案。然而, 我很好奇是否还有一个简单的纯SQL解决方案 非常感谢, Maik将所有两个表合并,但在第二个表的select中,应将SequenceNo列乘以3。(如果希望它显示在第一列的第三列之后,可能是3.00001) 解决方案:

我有两个表,其中包含以下数据

表“第1组”:

表“第2组”:

我有一个给定的3:1的配给,这应该是一个混合的群体

结果将是:

id
--
101
102
103
201
104
105
理想情况下,当其中一组为空时,混合停止

我已经实现了一个面向对象的解决方案。然而, 我很好奇是否还有一个简单的纯SQL解决方案

非常感谢,


Maik

将所有两个表合并,但在第二个表的select中,应将SequenceNo列乘以3。(如果希望它显示在第一列的第三列之后,可能是3.00001)

解决方案:

    SELECT * FROM 
     (SELECT id, SequenceNo FROM Group1
       UNION ALL
     SELECT id, SequenceNo*3.00001 FROM Group2)
   ORDER BY SequenceNo ASC

应将where子句添加到过滤器组2中,以保持整洁。我知道会有一些简单的事情存在。只是出于好奇:如果比率不是固定的,而是像3:2或1:1那样变化,你看到类似的直接解决方案了吗?谢谢当然可以:只需将*3.00001更改为您想要使用的比率。你甚至可以这样做:SequenceNo*((3/2)+0.00001))(在这个示例中,3/2代表3:2的比率)。我最终尝试了你后来的建议,使用了非固定比率:但是它没有像预期的那样起作用:无论如何,你已经正确地回答了最初的问题,所以我将此标记为已回答。也许你能抽点时间看看小提琴?Tnx!
id
--
101
102
103
201
104
105
    SELECT * FROM 
     (SELECT id, SequenceNo FROM Group1
       UNION ALL
     SELECT id, SequenceNo*3.00001 FROM Group2)
   ORDER BY SequenceNo ASC