麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

SQLServer 2008 R2中使用Cross apply統計最新數據和最近數據

2024-08-31 01:03:42
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了SQLServer 2008中的R2 Cross apply統計最新數據和最近數據的相關資料,需要的朋友可以參考下
 

使用 APPLY 運算符可以為實現查詢操作的外部表表達式返回的每個行調用表值函數。表值函數作為右輸入,外部表表達式作為左輸入。通過對右輸入求值來獲得左輸入每一行的計算結果,生成的行被組合起來作為最終輸出。APPLY 運算符生成的列的列表是左輸入中的列集,后跟右輸入返回的列的列表。

注意:若要使用 APPLY,數據庫兼容級別必須至少為 90。

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

好久沒寫SQL了,手都有點生了。哈哈,今天回答個問題。順便記錄下來。

SQLServer 2008 R2中使用Cross apply統計最新數據和最近數據

事主的需求

SQLServer 2008 R2中使用Cross apply統計最新數據和最近數據

事主的問題應該是想把最新的數據和次新數據放在一行里顯示。

因為沒有說明重復的情況如何處理,即有多個最新數據或者有多個次新數據,所以我沒有做過多的處理。

--by wls----網絡代碼有風險--復制粘貼須謹慎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 

運行的結果應該是正確的。

但是看執行計劃,不是很好啊。

SQLServer 2008 R2中使用Cross apply統計最新數據和最近數據

有空再改改。

你可以嘗試一下這個,看看是什么結果。

產生這種原因是因為你沒有做出具體規定。

--by wls----網絡代碼有風險--復制粘貼須謹慎--------------------------------------------------------------------------你可以嘗試一下這個,看看是什么結果。--產生這種原因是因為沒有做出具體規定。------------------------------------------------------------------------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

以上內容是小編給大家介紹的SQLServer 2008 R2中使用Cross apply統計最新數據和最近數據的相關知識,希望對大家有所幫助!



注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成年人在线免费播放视频 | 国产乱淫av一区二区三区 | av之家在线观看 | 久久成人免费网 | 中国洗澡偷拍在线播放 | 国产一区二区不卡视频 | 国产亚洲精品影达达兔 | 91精品久久久久久久 | 男人的天堂毛片 | 成年免费观看视频 | 国产porn在线 | 污版视频在线观看 | 91久久精品一二三区 | 亚洲电影在线播放 | 最近免费观看高清韩国日本大全 | 狠狠99| h视频在线免费观看 | 免费在线观看毛片 | 欧美一级淫片免费播放口 | 九九热免费精品 | 婷婷久久网 | 精品国产91久久久 | 草莓视频久久 | av之家在线观看 | 日韩激情 | 色视频在线 | 欧美日韩在线播放 | 在线成人免费视频 | 日韩视频一区二区在线观看 | 在线成人免费视频 | 色屁屁xxxxⅹ在线视频 | av色在线观看 | 亚洲综人网 | 婷婷中文字幕一区二区三区 | 做爰裸体激情2 | 色婷婷一区二区三区 | 成人国产精品色哟哟 | 免费一级特黄做受大片 | av人人| 免费男女视频 | 国产精品免费小视频 |