在查询中重用别名

使用别名作为另一列。例如,采取以下查询。

SELECT'Santosh'作为fname,'Jadi'作为lname,fname;

我想重新使用alias fname 作为第三列。

可能吗?如果是的话,如何实现呢?

0
重用意味着什么?是的,你可以,但你仍然需要一个有效的子句来获取数据 - 字段,常量,函数,只是一些东西。只添加“,名称”不提供数据。
额外 作者 TomTom,
你想要实现什么目标?将'Santosh'输出作为结果集中的第一列和第三列?
额外 作者 Diado,
如果fname是db表中的列,那么你可以,但是为了什么?
额外 作者 PawelCz,
@Diado是的,确切地说。
额外 作者 Santosh Jadi,
@PawelCz想要通过别名来获取它
额外 作者 Santosh Jadi,

5 答案

你可以做 :

select t.fname, t.lname, t.fname as thirdcolumn
from ( values ('Santosh', 'Jadi') 
     ) t (fname, lname);

对于您的实际表格,您可以将其重新表达为:

select t.*, tt.fname as thirdcolumn
from table t cross apply 
     ( values (col) 
     ) tt (fname);
3
额外

我建议你使用CTE,它会给你空闲的手,你可以多次使用它们而无需任何额外的工作。

WITH MyTable AS
(
  SELECT 'Santosh' as fname, 'Jadi' as lname
)
SELECT fname, lname, fname
FROM MyTable 
2
额外

在这种情况下,您必须使用子查询

SELECT fname, lname, 
    fname AS col3,
    fname AS col4 -- so on
FROM (SELECT 'Santosh' as fname, 'Jadi' as lname) t

OUTPUT:

fname   lname   col3    col4
Santosh Jadi    Santosh Santosh
1
额外

要访问 fname ,您需要将查询放在子查询中,如下所示:

SELECT K.fname, K.lname, K.fname as NewFname 
FROM(    
      SELECT 'Santosh' as fname, 'Jadi' as lname
) as K
1
额外

是的,这是下面可能的例子

SELECT  weekdayname as A,weekdayname as A from
(
SELECT 'Sunday' AS weekdayname UNION ALL
SELECT 'Monday' UNION ALL
SELECT 'Tuesday' UNION ALL
SELECT 'Wednesday' UNION ALL
SELECT 'Thursday' UNION ALL
SELECT 'Friday' UNION ALL
SELECT 'Saturday'

) T
1
额外