在查询中重用别名

Reuse of alias in a query

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

SELECT 'Santosh' as fname, 'Jadi' as lname, fname;

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

可能吗?如果是,我该如何实现?

你可以这样做:

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

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

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

是的,下面是可能的示例

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

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

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

在这种情况下你必须使用subquery

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

输出:

fname   lname   col3    col4
Santosh Jadi    Santosh Santosh

我建议你使用 CTE,它可以让你自由发挥,你可以多次使用它们而无需任何额外的工作。

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