久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

填充日期時(shí)間列

Populating a Datetime Column(填充日期時(shí)間列)
本文介紹了填充日期時(shí)間列的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

我想在存儲(chǔ)過(guò)程中動(dòng)態(tài)填充日期時(shí)間列.下面是我目前使用的查詢,但會(huì)降低查詢性能.

I want to populate a datetime column on the fly within a stored procedure. below is the query that I currently have that does same but slows down query performance.

CREATE TABLE #TaxVal
(
    ID         INT
    , PaidDate DATETIME
    , CustID   INT
    , CompID   INT 
)

INSERT INTO #TaxVal(ID, PaidDate, CustID, CompID)
VALUES(01, '20150201',12, 100)
    , (03,'20150301', 18,101)
    , (10,'20150401',19,22)
    , (17,'20150401',02,11)
    , (11,'20150411',18,201)
    , (78,'20150421',18,299)
    , (133,'20150407',18,101)

--  SELECT * FROM #TaxVal

DECLARE @StartDate DATETIME = '20150101'
    , @EndDate     DATETIME = '20150501'

DECLARE @Tab TABLE 
(
    CompID    INT
    , DateField DATETIME
)

DECLARE @T INT
SET @T = 0
WHILE @EndDate >= @StartDate + @T 
BEGIN
    INSERT INTO @Tab 
    SELECT CompID
         , @StartDate + @T AS DateField
    FROM #TaxVal
    WHERE CustID = 18
        AND CompID = 101
    ORDER BY DateField DESC

    SET @T = @T + 1
END

SELECT DISTINCT * FROM @Tab 

DROP TABLE #TaxVal

編寫(xiě)此查詢以獲得更好性能的最佳方法是什么?

Which is the best way to write this query for better performance?

推薦答案

改變這個(gè):

DECLARE @T INT
SET @T = 0
WHILE @EndDate >= @StartDate + @T 
BEGIN
    INSERT INTO @Tab 
SELECT CompID
     , @StartDate + @T AS DateField
FROM #TaxVal
WHERE CustID = 18
    AND CompID = 101
ORDER BY DateField DESC

SET @T = @T + 1
END

為此:

;with cte as(
select cast('20150101' as date) as d
union all
select dateadd(dd, 1, d) as d from cte where d < '20150501'
)
INSERT INTO @Tab
SELECT CompID, d
FROM #TaxVal 
cross join cte
WHERE CustID = 18 AND CompID = 101
Option(maxrecursion 0)

這是獲取范圍內(nèi)所有日期的遞歸公用表表達(dá)式.然后你做一個(gè) cross join 并插入.請(qǐng)注意,插入時(shí)設(shè)置順序是沒(méi)有意義的.

Here is recursive common table expression to get all dates in range. Then you do a cross join and insert. Notice that there is no sense to order set while inserting.

這篇關(guān)于填充日期時(shí)間列的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問(wèn)題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Modify Existing decimal places info(修改現(xiàn)有小數(shù)位信息)
The correlation name #39;CONVERT#39; is specified multiple times(多次指定相關(guān)名稱“CONVERT)
T-SQL left join not returning null columns(T-SQL 左連接不返回空列)
remove duplicates from comma or pipeline operator string(從逗號(hào)或管道運(yùn)算符字符串中刪除重復(fù)項(xiàng))
Change an iterative query to a relational set-based query(將迭代查詢更改為基于關(guān)系集的查詢)
concatenate a zero onto sql server select value shows 4 digits still and not 5(將零連接到 sql server 選擇值仍然顯示 4 位而不是 5)
主站蜘蛛池模板: ririsao久久精品一区 | 国产乱码精品一区二区三区中文 | 中文字幕在线不卡播放 | 精品视频一区二区三区 | 国产欧美精品区一区二区三区 | 嫩草视频入口 | 夜夜爽99久久国产综合精品女不卡 | 国产精品一区二区三区在线 | 国产成人免费视频 | 91av导航| 国产精品久久久久久一区二区三区 | 欧美天堂| 欧美一区2区三区4区公司 | 国产91久久久久 | 在线视频一区二区 | 91九色网站| 激情小视频| 人人九九精 | 欧美久久久久久久久 | 久久极品 | 天天曰夜夜 | 国产高清视频一区 | 91在线成人 | 免费一区 | 久久综合一区 | 日本福利视频免费观看 | 成人精品一区二区三区四区 | 国产综合网址 | 欧美男人天堂 | 日韩在线免费视频 | 一区二区三区免费在线观看 | 亚洲视频在线播放 | 国产一二三视频在线观看 | 国产精品久久一区二区三区 | 99久久精品一区二区毛片吞精 | 6080yy精品一区二区三区 | 成年免费大片黄在线观看岛国 | 欧美高清dvd| 国产良家自拍 | 一级视频在线免费观看 | 久草免费电影 |