在标量子查询中创建别名 - SQLServer
Create Alias in Scalar Subquery - SQLServer
我在 SAS 中执行此操作,但原则应适用于 sqlserver。
我有一个 table 是完全加入帐号的结果,所以它看起来像这样:
abc_accno xyz_accno
11111 .
22222 22222
. 66666
33333 33333
44444 44444
. 55555
我的最终目标是 table 看起来像这样:
count_abc_accno count_xyz_accno matched_pairs
4 5 3
所以我的查询是这样的:
create table matched_pairs as
select
count(abc_accno) as Count_abc_AccNo
,count(xyz_accno) as Count_xyz_AccNo
,(select count(abc_accno) as matched_pairs
from t1
where abc_accno = xyz_accno)
from t1
;
我的结局是这样的:
count_abc_accno count_xyz_accno _randomname
4 5 3
我认为可能有更优雅的方法来做到这一点,但我们使用我们拥有的工具(和知识)。我希望匹配对变量表示匹配对,但无法弄清楚如何将其从系统生成的名称中删除。
执行此操作的最佳方法是什么?有没有比我正在尝试的更优雅的解决方案? (好像总有...总有一天)
使用as
分配列别名:
create table matched_pairs as
select count(abc_accno) as Count_abc_AccNo,
count(xyz_accno) as Count_xyz_AccNo,
(select count(abc_accno)
from t1
where abc_accno = xyz_accno
) as matched_pairs
from t1;
子查询中的别名与外部查询无关。子查询只是 returns 一个值。您必须在外部查询中分配别名。
还考虑放弃使用子查询并对计数的逻辑条件求和,因为 True 解析为 1,False 解析为 0。
create table matched_pairs as
select
count(abc_accno) as Count_abc_AccNo
, count(xyz_accno) as Count_xyz_AccNo
, (abc_accno = xyz_accno)
from t1;
在 SQL 服务器中,您可能需要在 case
语句中包装
create table matched_pairs as
select
count(abc_accno) as Count_abc_AccNo
, count(xyz_accno) as Count_xyz_AccNo
, (case when abc_accno = xyz_accno then 1 else 0 end)
from t1;
我在 SAS 中执行此操作,但原则应适用于 sqlserver。 我有一个 table 是完全加入帐号的结果,所以它看起来像这样:
abc_accno xyz_accno
11111 .
22222 22222
. 66666
33333 33333
44444 44444
. 55555
我的最终目标是 table 看起来像这样:
count_abc_accno count_xyz_accno matched_pairs
4 5 3
所以我的查询是这样的:
create table matched_pairs as
select
count(abc_accno) as Count_abc_AccNo
,count(xyz_accno) as Count_xyz_AccNo
,(select count(abc_accno) as matched_pairs
from t1
where abc_accno = xyz_accno)
from t1
;
我的结局是这样的:
count_abc_accno count_xyz_accno _randomname
4 5 3
我认为可能有更优雅的方法来做到这一点,但我们使用我们拥有的工具(和知识)。我希望匹配对变量表示匹配对,但无法弄清楚如何将其从系统生成的名称中删除。
执行此操作的最佳方法是什么?有没有比我正在尝试的更优雅的解决方案? (好像总有...总有一天)
使用as
分配列别名:
create table matched_pairs as
select count(abc_accno) as Count_abc_AccNo,
count(xyz_accno) as Count_xyz_AccNo,
(select count(abc_accno)
from t1
where abc_accno = xyz_accno
) as matched_pairs
from t1;
子查询中的别名与外部查询无关。子查询只是 returns 一个值。您必须在外部查询中分配别名。
还考虑放弃使用子查询并对计数的逻辑条件求和,因为 True 解析为 1,False 解析为 0。
create table matched_pairs as
select
count(abc_accno) as Count_abc_AccNo
, count(xyz_accno) as Count_xyz_AccNo
, (abc_accno = xyz_accno)
from t1;
在 SQL 服务器中,您可能需要在 case
语句中包装
create table matched_pairs as
select
count(abc_accno) as Count_abc_AccNo
, count(xyz_accno) as Count_xyz_AccNo
, (case when abc_accno = xyz_accno then 1 else 0 end)
from t1;