sql-server中欄位別名的特殊使用
mysql中使用表別名與字段別名的基本教程
謝謝原作者的辛勤付出,貼過來如下:
有如下sql語句:
【案例1】
select
username
asa, useraddress
asbfrom testtable
where
alike
'%am%'
該語句執行是會報錯,因為
別名只是對字段的一種引用,不能當作字段一樣使用,如果真要把別名當欄位一樣使用,可以如下變通:
select a, b
from(
select
username as
a, useraddress as
bfrom testtable
) as
temptable
where a
like
'%dd%'
如此,便可把別名當欄位一樣使用了
但是需要和足以紫色字型部分,該處要給內嵌的select查詢指定乙個別名,否則會報錯
【案例2】
select coutday
asa, month1
asb,
(select 信用天數 from paydays where 自定義值 = month1
)asc, (
a+ c) as
'total'
from testtable
變通為:
select a, b,
a + c as
'total'
from(
select coutday as
a, month1 as
b, (select 信用天數 from paydays where 自定義值 = month1) as
cfrom testtable
) as
temptable
【案例3】
下面的sql語句中中,灰色部分重複了兩次,第二個灰色部分有不能用第乙個灰色區域的別名countdays替換,一旦替換會出現語法錯誤。
select
ccustcode as 客戶**,
cpayway as 付款條件,
cpaycode as 付款方式,
case
when cpayway like '%月結%' then (datediff(day, doutdate, dateadd(ms,-3,dateadd(mm, datediff(m,0,doutdate)+1, 0))) + (select 信用天數 from paydays where 自定義值 = cpayway))
else (select 信用天數 from paydays where 自定義值 = cpayway)
end as countdays,
convert(varchar(12),doutdate, 102) as 出庫日期,
convert(varchar(12),dateadd(day, cast(
( case
when cpayway like '%月結%' then (datediff(day, doutdate, dateadd(ms,-3,dateadd(mm, datediff(m,0,doutdate)+1, 0))) + (select 信用天數 from paydays where 自定義值 = cpayway))
else (select 信用天數 from paydays where 自定義值 = cpayway)
end) as int), doutdate), 102) as 實際回款日期
from ods.f_dispatchlist_all
where (isum-isnull(nsumaramt,0))>10e-8
我們把第二個灰色部分提出來,改為
select 客戶**,付款條件, 付款方式,countdays,出庫日期,convert(varchar(12),dateadd(day, cast(
countdays)as int), doutdate), 102)
as 實際回款日期
from(
select
ccustcode as 客戶**,
cpayway as 付款條件,
cpaycode as 付款方式,
case
when cpayway like '%月結%' then (datediff(day, doutdate, dateadd(ms,-3,dateadd(mm, datediff(m,0,doutdate)+1, 0))) + (select 信用天數 from paydays where 自定義值 = cpayway))
else (select 信用天數 from paydays where 自定義值 = cpayway)
end as
countdays,
convert(varchar(12),doutdate, 102) as 出庫日期
from ods.f_dispatchlist_all
where (isum-isnull(nsumaramt,0))>10e-8 )
sql語句中select as的用法
sql server中欄位別名的特殊使用 mysql中使用表別名與字段別名的基本教程 謝謝原作者的辛勤付出,貼過來如下 有如下sql語句 案例1 select username asa,useraddress asbfrom testtable where alike am 該語句執行是會報錯,因為...
Sql語句中的DDL語句
資料庫模式定義語言ddl data definition language 是用於描述資料庫中要儲存的現實世界實體的語言。主要由create 新增 alter 修改 drop 刪除 和 truncate 刪除 四個關鍵字完成。create database 資料庫名 建立乙個資料庫 create d...
sql查詢語句中
sql查詢語句中select t.status,t.rowid from person t where t.status 2,此處查詢的是status不等於2的記錄,並過濾掉status為null的記錄。注意 此處不管status是integer型別還是long型別,都會過濾掉status為null...