SQL Server重复记录+为每个新行添加时间

时间:2015-08-04 11:47:12

标签: sql-server duplicate-data

下面是我正在使用的CTE,用于计算在给定时间段内发送传输所需的次数。 CTE通过将以秒为单位发送的时间(HT.ElapsedTime)分享60来进行工作。然后生成一个诸如4,6,10等的值。

CTE_Duplicated Records_Count

WITH CTE_Duplicate_Records_Count AS
(
SELECT
        H.ObjectGuid AS Transmission_ID
    ,   H.TRDateTime AS [Transmission Start Time]
    ,   HT.[ElapsedTime] / 60 AS [totalCount]
FROM [dbo].History AS H (NOLOCK)
LEFT OUTER JOIN [dbo].HistoryTRX AS HT (NOLOCK) ON H.handle = HT.handle

主选择语句从传输表中提取必要的列,并将上面的CTE连接到传输ID匹配的位置。

主要选择声明

SELECT

    -- Transmission Table
    ---------------------
        H.ObjectGuid AS Transmission_ID
    ,   CAST(H.[TRDateTime] AS DateTime) AS [Transmission Start Date]
    ,   CAST(DATEADD(second, HT.ElapsedTime, H.TRDateTime) AS DateTime) AS [Transmission End Date]
    ,   HT.[ElapsedTime] AS [Time taken to send in seconds]
    ,   HT.GoodPageCount AS Pages
    ,   HT.[ChannelUsed]

    -- CTE Duplicate Records Count 
    --------------------------
    ,   DRC.Transmission_ID
    ,   DRC.totalCount

FROM [dbo].History AS H (NOLOCK)
LEFT OUTER JOIN [dbo].HistoryTRX AS HT (NOLOCK) ON H.handle = HT.handle

INNER JOIN CTE_Duplicate_Records_Count DRC ON Transmission_ID = H.ObjectGuid

WHERE 
    DRC.Transmission_ID = 'BFE008F7-F9D6-44D8-B06C-916875FC0F6D'

ORDER BY H.ObjectGuid DESC

作为一个例子,上面的select语句产生如下:

TransmissionID
Transmission Start Date
Transmission End Date
Time Taken in seconds
Pages
TotalCount

BBBBBB
2015-08-04 12:42:45
2015-08-04 12:56:45
840
5
14 (minutes)

所需的结果是每个记录都由totalCount数字复制。即上述记录将重复14次。此外,对于每个重复的行,我想在开始时间添加60秒。

关于如何实现这一目标的任何想法?

0 个答案:

没有答案