Sql-Server

x 在這個查詢中代表什麼?

  • October 29, 2018
select 
convert(varchar(10),  TotalSeconds / 3600) +':'+
convert(varchar(10),   TotalSeconds % 3600 / 60) +':'+ 
convert(varchar(10),  TotalSeconds % 60) as Seconds
from
(select
 DateDiff
(second, date,outtime )
as TotalSeconds 
   from attendance.attn_card_register) x -- this one

它是用於引用派生表的別名。在外部 SELECT 中,如果您完全限定了他們將讀取的列引用x.TotalSeconds

select convert(varchar(10)
    , x.TotalSeconds / 3600) +':'+ convert(varchar(10)
    , x.TotalSeconds % 3600 / 60) +':'+ convert(varchar(10)
    , x.TotalSeconds % 60) as Seconds 
from (select DateDiff (second, date,outtime ) as TotalSeconds 
     from attendance.attn_card_register) x

FROM 子句中使用的所有表都必須具有標準 SQL 術語中的“相關名稱”,即普通白話 SQL 中的“別名”

直接使用表時,名字就很明顯了。當您使用內聯派生表時,無論它是否實際被引用,它都必須使用別名

您也可以使用 CTE。這裡“MyCTE”是名稱,不需要別名

;WITH MyCTE AS
(
   select
     DateDiff (second, date,outtime)  as TotalSeconds 
   from
       attendance.attn_card_register)
)
Select 
  convert(varchar(10),  TotalSeconds / 3600) +':'+
  convert(varchar(10),   TotalSeconds % 3600 / 60) +':'+ 
  convert(varchar(10),  TotalSeconds % 60) as Seconds
from
  MyCTE;

編輯:並非所有 RDBMS 都需要它。SQL Server、MySQL 和 Teradata 可以,Oracle 沒有。

引用自:https://dba.stackexchange.com/questions/6736