2015-09-30 42 views
-3

我发现这个计算器后,Add a summary row with totalsSQL - 结合另一个SELECT查询与JOIN

我试图做到的是这一点,但与转换时间字段我在此列出了下面的语句。我试图总结当天的持续时间(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; 
+3

你可以给我们表结构,输入和所需的输出吗?很难理解你想要什么。 – sagi

+0

我为此道歉。谢谢你提醒我。以下是链接。 http://www.tvlift.com/beta-test/table.png – user3434068

回答

0

如果你只是在你的受骗者表要为时间总总,你可以概括你的时间在那里。

;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 
) 

并添加,TOTAL_TIME你的SELECT语句。

如果在查询多天,你将需要添加日期字段中受骗者,并将其添加为JOIN的ON子句的一部分。

+0

谢谢亲切的先生! – user3434068