国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

SQLServer 2008 R2中使用Cross apply統(tǒng)計(jì)最新數(shù)據(jù)和最近數(shù)據(jù)

2024-08-31 01:03:42
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了SQLServer 2008中的R2 Cross apply統(tǒng)計(jì)最新數(shù)據(jù)和最近數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
 

使用 APPLY 運(yùn)算符可以為實(shí)現(xiàn)查詢(xún)操作的外部表表達(dá)式返回的每個(gè)行調(diào)用表值函數(shù)。表值函數(shù)作為右輸入,外部表表達(dá)式作為左輸入。通過(guò)對(duì)右輸入求值來(lái)獲得左輸入每一行的計(jì)算結(jié)果,生成的行被組合起來(lái)作為最終輸出。APPLY 運(yùn)算符生成的列的列表是左輸入中的列集,后跟右輸入返回的列的列表。

注意:若要使用 APPLY,數(shù)據(jù)庫(kù)兼容級(jí)別必須至少為 90。

APPLY 有兩種形式:CROSS APPLY 和 OUTER APPLY。CROSS APPLY 僅返回外部表中通過(guò)表值函數(shù)生成結(jié)果集的行。OUTER APPLY 既返回生成結(jié)果集的行,也返回不生成結(jié)果集的行,其中表值函數(shù)生成的列中的值為 NULL。

好久沒(méi)寫(xiě)SQL了,手都有點(diǎn)生了。哈哈,今天回答個(gè)問(wèn)題。順便記錄下來(lái)。

SQLServer 2008 R2中使用Cross apply統(tǒng)計(jì)最新數(shù)據(jù)和最近數(shù)據(jù)

事主的需求

SQLServer 2008 R2中使用Cross apply統(tǒng)計(jì)最新數(shù)據(jù)和最近數(shù)據(jù)

事主的問(wèn)題應(yīng)該是想把最新的數(shù)據(jù)和次新數(shù)據(jù)放在一行里顯示。

因?yàn)闆](méi)有說(shuō)明重復(fù)的情況如何處理,即有多個(gè)最新數(shù)據(jù)或者有多個(gè)次新數(shù)據(jù),所以我沒(méi)有做過(guò)多的處理。

--by wls----網(wǎng)絡(luò)代碼有風(fēng)險(xiǎn)--復(fù)制粘貼須謹(jǐn)慎USE tempdbGOIF OBJECT_ID('t_TestbyWLS','U') IS NOT NULLDROP TABLE t_TestbyWLSGOCREATE TABLE t_TestbyWLS(PName NVARCHAR(),PSId INTEGER,ChkDate NVARCHAR(),Price FLOAT)GOINSERT INTO t_TestbyWLS VALUES('A',,'',.),('B',,'',.)--,('B',,'',.),('A',,'',.),('B',,'',.),('A',,'',.)--,('A',,'',.)GOSELECT * FROM t_TestbyWLSGO/*SELECT PName,PSId,ChkDate,Price,DENSE_RANK() OVER(PARTITION BY PName ORDER BY CAST(Chkdate AS INTEGER) DESC ) AS DRID,ROW_NUMBER() OVER(PARTITION BY PName ORDER BY CAST(Chkdate AS INTEGER) DESC,Price DESC ) AS RIDFROM t_TestbyWLSGO*/WITH TempChkDateAS(SELECT PName,PSId,ChkDate,Price,DENSE_RANK() OVER(PARTITION BY PName ORDER BY CAST(Chkdate AS INTEGER) DESC ) AS DRID,ROW_NUMBER() OVER(PARTITION BY PName ORDER BY CAST(Chkdate AS INTEGER) DESC,Price DESC ) AS RIDFROM t_TestbyWLS)SELECT tcd.PName,tcd.PSID,tcd.ChkDate,tcd.Price,/*tcd.DRID,tcd.RID,*/t.tcd,t.tpFROM TempChkDate AS tcd CROSS APPLY(SELECT ChkDate AS tcd, Price AS tp FROM TempChkDateWHERE --tcd.DRID= ANDtcd.PName=TempChkDate.PName ANDtcd.PSId=TempChkDate.PSId ANDTempChkDate.Drid= ) AS tWHERE tcd.DRID=GO 

運(yùn)行的結(jié)果應(yīng)該是正確的。

但是看執(zhí)行計(jì)劃,不是很好啊。

SQLServer 2008 R2中使用Cross apply統(tǒng)計(jì)最新數(shù)據(jù)和最近數(shù)據(jù)

有空再改改。

你可以嘗試一下這個(gè),看看是什么結(jié)果。

產(chǎn)生這種原因是因?yàn)槟銢](méi)有做出具體規(guī)定。

--by wls----網(wǎng)絡(luò)代碼有風(fēng)險(xiǎn)--復(fù)制粘貼須謹(jǐn)慎--------------------------------------------------------------------------你可以嘗試一下這個(gè),看看是什么結(jié)果。--產(chǎn)生這種原因是因?yàn)闆](méi)有做出具體規(guī)定。------------------------------------------------------------------------USE tempdbGOIF OBJECT_ID('t_TestbyWLS','U') IS NOT NULLDROP TABLE t_TestbyWLSGOCREATE TABLE t_TestbyWLS(PName NVARCHAR(),PSId INTEGER,ChkDate NVARCHAR(),Price FLOAT)GOINSERT INTO t_TestbyWLS VALUES('A',,'',.),('B',,'',.),('B',,'',.),('A',,'',.),('B',,'',.),('A',,'',.),('A',,'',.)GOWITH TempChkDateAS(SELECT PName,PSId,ChkDate,Price,DENSE_RANK() OVER(PARTITION BY PName ORDER BY CAST(Chkdate AS INTEGER) DESC ) AS DRID,ROW_NUMBER() OVER(PARTITION BY PName ORDER BY CAST(Chkdate AS INTEGER) DESC,Price DESC ) AS RIDFROM t_TestbyWLS)SELECT tcd.PName,tcd.PSID,tcd.ChkDate,tcd.Price,tcd.DRID,tcd.RID,t.tcd,t.tpFROM TempChkDate AS tcd CROSS APPLY(SELECT ChkDate AS tcd, Price AS tp FROM TempChkDateWHERE --tcd.DRID= ANDtcd.PName=TempChkDate.PName ANDtcd.PSId=TempChkDate.PSId ANDTempChkDate.Drid= ) AS tWHERE tcd.DRID=GO

以上內(nèi)容是小編給大家介紹的SQLServer 2008 R2中使用Cross apply統(tǒng)計(jì)最新數(shù)據(jù)和最近數(shù)據(jù)的相關(guān)知識(shí),希望對(duì)大家有所幫助!



注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到MSSQL教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 深水埗区| 安宁市| 贵阳市| 陇南市| 凌海市| 无极县| 嘉定区| 巴里| 锦州市| 永平县| 冷水江市| 丰台区| 昌吉市| 西丰县| 长泰县| 莱州市| 得荣县| 化州市| 大余县| 辉县市| 望江县| 凤城市| 南溪县| 中阳县| 湘阴县| 前郭尔| 莲花县| 信宜市| 锦州市| 泰兴市| 高邮市| 和龙市| 合作市| 瑞金市| 湖口县| 宁明县| 宜川县| 垫江县| 于田县| 江油市| 贵阳市|