1

我需要连接两个具有相同行数的表。每个表有 1 列。连接没有可参考的连接列。我需要将它们并排加入,因为每个表都是单独排序的,因此数值按降序排列在顶部。

表收入者的收入值从 200K 到 0。我不能只选择使用 2 个案例,因为那样我的第一行的收入将超过 100K,但第二行中的前 20 个左右条目为 NULL。我希望第二行也按降序排序。

我在 CASE 中使用 ORDER BY 进行了查找,但没有这样的东西。我曾尝试阅读有关 row_number() 的内容,但这些示例似乎都不匹配或没有意义。

drop table #20plus
select
    case
        when Income >= 20000 AND Income < 100000
        then Income end as 'mula'
into #20plus
from Earners
order by mula desc


drop table #100plus
select
    case
        when Income >= 100000
        then Income end as 'dinero'
into #100plus
from Earners
order by dinero desc

Select A.dinero, B.mula
FROM #100plus as A JOIN #20plus as B
ON A.????? = B.?????

由于 A 和 B 都按降序排序,将所有 NULL 移到底部,我可以参考什么来连接这两个表?

使用一个 SELECT 语句和 2 个 CASE 语句的先前输出

dinero             mula
2.12688e+007       NULL
1.80031e+007       NULL
1.92415e+006       NULL
…                  …
NULL               93530.7
NULL               91000
NULL               84500

创建两个临时表后使用一个 SELECT 语句的所需输出

dinero          mula
2.12688e+007    93530.7
1.80031e+007    91000
1.92415e+006    84500
…               82500
NULL            82000
NULL            …
NULL            NULL

这是Microsoft SQL Server 2008。我对此非常陌生,所以请尽可能简单明了地给出答案。谢谢你。

4

2 回答 2

0

如果将表一分为二,使用 row_number() 以降序生成数字,则可以通过 row_number 连接它们。注意数字是如何产生的——row_number 是按顺序给出的。

; WITH _20plus AS (
     SELECT CASE WHEN income >= 20000 AND income < 100000 
                 THEN income 
             END AS Mula,
             Row_number() OVER (ORDER BY CASE WHEN income >= 20000 AND income
                < 100000 THEN income END DESC) rn
       FROM earners
     ),
     _100plus AS (
     SELECT CASE WHEN income >= 100000 THEN income 
             END AS Dinero,
            Row_number() OVER (ORDER BY CASE WHEN income >= 100000 
                                             THEN income END DESC) rn
       FROM earners
)
SELECT a.dinero,
       b.mula
FROM _100plus AS a
   INNER JOIN _20plus AS b
      ON a.rn = b.rn  
于 2012-04-11T18:56:57.423 回答
0
Select A.dinero, B.mula
FROM #100plus as A FULL OUTER JOIN #20plus as B
ON A.dinero = B.mula
ORDER BY A.dinero,B.mula;
于 2012-04-11T18:44:49.290 回答