亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

SQL語句練習實例之一——找出最近的兩次晉升日期與工資額

2024-08-31 00:58:07
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:


--程序員們在編寫一個雇員報表,他們需要得到每個雇員當前及歷史工資狀態的信息,
--以便生成報表。報表需要顯示每個人的晉升日期和工資數目。
--如果將每條工資信息都放在結果集的一行中,并讓宿主程序去格式化它。
--應用程序的程序員都是一幫懶人,他們需要在每個雇員的一行上得到當前
--和歷史工資信息。這樣就可以寫一個非常簡單的循環語句。
---示例:
create table salaries
( name nvarchar(50) not null,
sal_date date not null,
salary money not null,
)
go
ALTER TABLE [dbo].salaries ADD CONSTRAINT [PK_salaries] PRIMARY KEY CLUSTERED
(
name ,sal_date asc
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

----插入數據
insert into salaries
select 'TOM','2010-1-20',2000
union
select 'TOM','2010-6-20',2300
union
select 'TOM','2010-12-20',3000
union
select 'TOM','2011-6-20',4000
union
select 'Dick','2011-6-20',2000
union
select 'Harry','2010-6-20',2000
union
select 'Harry','2011-6-20',2000

go

----方法一、使用left join 連接進行查詢(sql 2000及以上版本)
select b.name,b.maxdate,y.salary,b.maxdate2,z.salary
from(select a.name,a.maxdate,MAX(x.sal_date) as maxdate2
from(select w.name,MAX(w.sal_date) as maxdate
from salaries as w
group by w.name) as a
left outer join salaries as x on a.name=x.name and a.maxdate>x.sal_date
group by a.name,a.maxdate) as b
left outer join salaries as y
on b.name=y.name and b.maxdate=y.sal_date
left outer join salaries as z
on b.name=z.name and b.maxdate2=z.sal_date

go
----方法二、這個方法是對每個雇員中的行進行編號,然后取出兩個雇用日期最近的日期,

---(sql 2005以上版本)
select s1.name,
MAX(case when rn=1 then sal_date else null end) as curr_date,
MAX(case when rn=1 then salary else null end) as curr_salary,
MAX(case when rn=2 then sal_date else null end) as prev_date,
MAX(case when rn=2 then salary else null end) as curr_salary
from (select name,sal_date,salary, RANK() over(partition by name order by sal_date desc) rn
from salaries
) s1 where rn<3 group by s1.name


go
---方法三、在sql server 2005之后版本可以使用這種方法 ,使用CTE的方式來實現
with cte(name,sal_date,sal_amt,rn)
as
(
select name,sal_date,salary,ROW_NUMBER() over(PARTITION by name order by sal_date desc) as rn from salaries
)
select o.name,o.sal_date AS curr_date,o.sal_amt as curr_amt,i.sal_date as prev_date ,i.sal_amt as prev_amt from cte as o
left outer join cte as i on o.name=i.name and i.rn=2 where o.rn=1

go

----方法四、使用視圖,將問題分為兩種情況

---1.只有一次工資變動的雇員

---2.有兩次或多次工資變動的雇員
create view v_salaries
as
select a.name,a.sal_date,MAX(a.salary) as salary from salaries as a ,salaries as b
where a.sal_date<=b.sal_date and a.name=b.name group by a.name,a.sal_date
having COUNT(*)<=2
go
select a.name,a.sal_date, a.salary,b.sal_date,b.salary from v_salaries a
,v_salaries b
where a.name=b.name and a.sal_date>b.sal_date
union all
select name,max(sal_date),max(salary),cast(null as date),cast(null as decimal(8,2))
from v_salaries
group by name
having count(*)=1

go
drop table salaries
go
drop view v_salaries

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
草民午夜欧美限制a级福利片| 精品美女永久免费视频| 欧美成人精品在线播放| 成人免费xxxxx在线观看| 亚洲欧美国产制服动漫| 欧美亚洲国产成人精品| 国外视频精品毛片| 国产精品h在线观看| 欧美wwwwww| 国产精品v日韩精品| 国产欧美日韩精品在线观看| 91久久精品国产91久久| 国产精品1区2区在线观看| 国产精品美女呻吟| 欧美激情伊人电影| 亚洲日本中文字幕免费在线不卡| 国产欧美va欧美va香蕉在线| 精品久久香蕉国产线看观看亚洲| 欧美激情视频在线| 亚洲大胆人体视频| 日韩av中文字幕在线免费观看| 亚洲最大av网站| 黄色精品在线看| 一区二区欧美久久| 欧美福利视频在线观看| www高清在线视频日韩欧美| 精品国产区一区二区三区在线观看| 91热精品视频| 美日韩丰满少妇在线观看| 欧美性生交xxxxx久久久| 亚洲精品国产suv| 亚洲精品www久久久| 日本19禁啪啪免费观看www| 国产精品免费视频久久久| 久久国产精品久久久久久| 国产精品香蕉在线观看| 亚洲欧美激情精品一区二区| 久热精品在线视频| 欧美日韩另类字幕中文| 97在线精品视频| 在线视频日韩精品| 欧美日韩国产中文精品字幕自在自线| 三级精品视频久久久久| 国产精品久久91| 亚洲欧美精品一区二区| 中文字幕日韩有码| 欧美精品久久久久久久| 亚洲人成电影网站色www| 日韩在线一区二区三区免费视频| 精品国产依人香蕉在线精品| 日本成人精品在线| 狠狠躁夜夜躁久久躁别揉| 福利视频导航一区| 日韩精品免费一线在线观看| 97人人爽人人喊人人模波多| 欧美精品免费在线观看| 久99久在线视频| 中文字幕日韩欧美精品在线观看| 精品国产自在精品国产浪潮| 久久久久国产一区二区三区| 亚洲欧美日韩天堂一区二区| 国产精品嫩草影院一区二区| 一道本无吗dⅴd在线播放一区| 欧美激情按摩在线| 久久精品影视伊人网| 91精品国产成人| 欧美激情精品在线| 国产精品6699| 日韩av在线播放资源| 亚洲国产精品国自产拍av秋霞| 色综合五月天导航| 国产成人精品视| 亚洲欧美日韩天堂一区二区| 91在线精品播放| 国产性猛交xxxx免费看久久| 久久福利视频导航| 美日韩丰满少妇在线观看| 日韩视频免费中文字幕| 欧美激情在线一区| 91性高湖久久久久久久久_久久99| 亚洲大尺度美女在线| 国产精品久久久av久久久| 国产精品视频一区二区高潮| 国产成人+综合亚洲+天堂| 亚洲女性裸体视频| 欧美精品videofree1080p| 黑人巨大精品欧美一区免费视频| 亚洲大胆人体在线| 亚洲精品久久久久中文字幕欢迎你| 欧美剧在线观看| 成人网欧美在线视频| 亚洲国产成人精品电影| 91av在线免费观看视频| 国产一区二区三区视频在线观看| 亚洲自拍偷拍第一页| 日本高清+成人网在线观看| 亚洲一区二区三区视频播放| 亚洲第一精品电影| 亚洲高清色综合| 国产精品久久中文| 久久人人爽人人爽爽久久| 欧美日韩中国免费专区在线看| 久久免费视频在线观看| 97久久超碰福利国产精品…| 91亚洲精品一区二区| 欧美激情亚洲另类| 日本成人在线视频网址| 久久av在线看| 欧美成人在线免费视频| 国产精品免费视频久久久| 精品视频在线播放免| 国产精品看片资源| 麻豆国产va免费精品高清在线| 色在人av网站天堂精品| 亚洲一区二区少妇| 欧美理论片在线观看| 亚洲天堂免费观看| 青草青草久热精品视频在线观看| 欧美色另类天堂2015| 亚洲国产黄色片| 色综合导航网站| 亚洲国产日韩欧美在线图片| 91在线观看免费高清| 日韩在线观看免费网站| 国产精品久久久久久久久久新婚| 欧美成人黑人xx视频免费观看| 色久欧美在线视频观看| 亚洲奶大毛多的老太婆| 91在线中文字幕| 精品电影在线观看| 亚洲电影免费观看高清| 欧美视频中文在线看| 91精品国产91久久久久久吃药| 热99精品里视频精品| 日本欧美一级片| 精品久久中文字幕| 国产精品欧美激情在线播放| 久久精品国产2020观看福利| 久久亚洲精品一区| 国产亚洲欧美日韩一区二区| 日韩亚洲欧美成人| 777精品视频| 国外成人免费在线播放| 国产精品高潮呻吟视频| 久久99热精品| 精品成人在线视频| 菠萝蜜影院一区二区免费| 中文字幕成人精品久久不卡| 97视频在线观看免费高清完整版在线观看| 91成品人片a无限观看| 两个人的视频www国产精品| 欧美成人合集magnet| 亚洲成人av在线播放| 蜜月aⅴ免费一区二区三区| www.欧美精品一二三区| 欧美极品在线视频| 富二代精品短视频| 成人黄色免费网站在线观看| 日韩av在线看| 国产精品电影在线观看| 美女国内精品自产拍在线播放| 午夜免费日韩视频| 日韩av在线天堂网| 国产精品国产自产拍高清av水多|