A,B为2,3,6,8,9中任意特定数字;  Z为0,1,4,5,7中任意特定数字;  X为0-9中任意数字,XX为不想等的两位任意数字;  如不同规则下游可能出现同一数字组合,采取就高不就低原则;实现AAAZ,ZZZA,ZAZA,XABB,AXAA,AXBB,AZZA,AAZZ,XXA8这些组合,
需要写成存储过程去执行,怎么写啊,求高手解答

解决方案 »

  1.   

    结果就是看有多少组合,例如AAAZ就有2360,2231等
      

  2.   

    多表连接产生笛卡尔积
    比如AAAZ:
    WITH t AS(
      SELECT ROWNUM-1 rn FROM dual
      CONNECT BY ROWNUM<=10)
    ,A AS(
      SELECT rn v FROM t WHERE rn IN(2,3,6,8,9))
    ,Z AS(
      SELECT rn v FROM t WHERE rn IN(0,1,4,5,7))
    SELECT a1.v||a2.v||a3.v||z.v
    from A a1,A a2,A a3,Z
      

  3.   

    AAA里三个数不能相等?
    加个条件
    where a1.v<>a2.v and a1.v<>a3.v and a2.v<>a3.v
      

  4.   

    不用存储过程也行,基本的sql代码怎么写啊
      

  5.   

    能帮我把XXA8这个算法过程写一下吗,第一个算出来是300个,要三个条件不相等的