如何从第1列读取随机行,它与第2列中的随机行相同在Microsoft SQL SERVER 2005中?

时间:2011-02-22 13:40:51

标签: sql-server-2005

我有3列

  1. 栏目Mark1
  2. 列转换
  3. 栏目Mark2
  4.     Mark1    Transition   Mark2
        1            a           2
        2            b           3
        1            a           4
        4            c           5
    

    我想得到的结果:

    • Mark2的结果,其中transition等于“a”且mark1等于“1”
    • 然后Mark2的结果,其中转换等于“b”,Mark2的第一行等于Mark1的第二行

    结果:

    2
    3
    

1 个答案:

答案 0 :(得分:0)

嗯,这不是很漂亮,但它确实符合我的要求。

cte的原因是使sql更清晰。

with t1a as
    (select * 
    from tablea a
    where a.mark1 = 1
    and a.transition = 'a'),
t2b as
    (select * 
    from tablea a
    where a.mark1 = 2
    and a.transition = 'b')
select t1a.mark2 
from t1a
where mark2 in (select mark1 from t2b)
union 
select t2b.mark2
from t2b

希望我没有误解你的要求。