Sql server SQL-将另一个SELECT查询与联接组合

Sql server SQL-将另一个SELECT查询与联接组合,sql-server,tsql,join,where-clause,with-statement,Sql Server,Tsql,Join,Where Clause,With Statement,我在stackoverflow上找到了这篇文章 我试图实现的只是这个,但是对于我在下面的with语句中列出的转换的持续时间字段。我想把那一天24小时的持续时间列加起来。我不知道这是否可能。让我知道。谢谢大家! ;WITH dupes AS ( SELECT CALLER_PHONE, DIALED_PHONE FROM dbo.PBXDATA GROUP BY CALLER_PHONE, DIALED_PHONE )

我在stackoverflow上找到了这篇文章

我试图实现的只是这个,但是对于我在下面的with语句中列出的转换的持续时间字段。我想把那一天24小时的持续时间列加起来。我不知道这是否可能。让我知道。谢谢大家!

;WITH dupes AS
(
    SELECT 
        CALLER_PHONE, DIALED_PHONE
    FROM 
        dbo.PBXDATA
    GROUP BY 
        CALLER_PHONE, DIALED_PHONE
)
SELECT 
    c.CALL_TIME, c.SALES_REP, c.CALL_TYPE, c.FLAG1, 
    COALESCE(NULLIF(c.FLAG3, 'NULL'),'') AS FLAG3, 
    ISNULL(dupes.CALLER_PHONE, '') + ISNULL(dupes.DIALED_PHONE,'') AS PHONE, 
    CONVERT(VARCHAR(8), c.DURATION, 108) AS DURATION
FROM 
    dupes
JOIN 
    dbo.PBXDATA c ON dupes.CALLER_PHONE = c.CALLER_PHONE 
                  OR dupes.DIALED_PHONE = c.DIALED_PHONE
WHERE 
    (c.SALES_REP LIKE 'Doug%' OR 
     c.SALES_REP LIKE 'Nick%' OR 
     c.SALES_REP LIKE 'Bob%' OR 
     c.SALES_REP LIKE 'Joe%' OR 
     c.SALES_REP LIKE 'John%')
    AND (c.CALL_TIME >= DATEADD(DAY, 0, DATEDIFF(DAY, 0,   CURRENT_TIMESTAMP)))
    AND (c.CALL_TIME <  DATEADD(DAY, 1, DATEDIFF(DAY, 0,  CURRENT_TIMESTAMP)))
    AND DURATION = (SELECT CAST(DATEADD(S, SUM(DATEDIFF(S, '00:00:00', DURATION)), '00:00:00') AS TIME) 
                    FROM dbo.PBXDATA) 
ORDER BY 
    c.CALL_TIME;

如果您只想在dupes表中获得整个持续时间的总和,您可以在那里对持续时间求和

;WITH dupes AS
(
SELECT CALLER_PHONE, DIALED_PHONE, convert(varchar(8), SUM(c.DURATION), 108) AS Total_Time 
FROM dbo.PBXDATA
GROUP BY CALLER_PHONE, DIALED_PHONE
)
并将总时间添加到SELECT语句中


如果查询中有多天,则需要在DUPE中添加日期字段,并将其作为JOIN的ON子句的一部分添加。

能否为我们提供表结构、输入和所需输出?很难理解你想要什么,我为此道歉。谢谢你提醒我。下面是链接。