Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接多个字段上的3个表-SQL Server_Sql_Sql Server_Sql Server 2005 - Fatal编程技术网

连接多个字段上的3个表-SQL Server

连接多个字段上的3个表-SQL Server,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,我正在使用SQLServer2005。我试图收集3个不同表格的信息 表1是[User_Table],看起来像: Lead ID 1 5 1 8 1 12 2 13 2 14 2 15 2 18 2 24 Int_Date ID Interaction 2012-03-01 5 Hang Up 2012-03-01 13 Reset 2012-03-01 8 Basic 2012-03-01 13 Ba

我正在使用SQLServer2005。我试图收集3个不同表格的信息

表1是[User_Table],看起来像:

Lead  ID
1     5
1     8
1     12
2     13
2     14
2     15
2     18
2     24
Int_Date    ID  Interaction
2012-03-01  5   Hang Up
2012-03-01  13  Reset
2012-03-01  8   Basic
2012-03-01  13  Basic
2012-03-02  14  Reset
2012-03-02  12  Advanced
2012-03-02  12  Hang Up
2012-03-02  24  Reset
2012-03-02  5   Basic
Repeat_d    ID  R_Interaction
2012-03-01  13  Reset
2012-03-01  8   Basic
2012-03-02  14  Reset
2012-03-02  12  Advanced
2012-03-02  24  Reset
DECLARE @StartDate smalldatetime, @EndDate smalldatetime, @TL_ID as smallint
SET @StartDate = '20120301'
SET @EndDate = '20120331'
SET @TL_ID = '2'
SELECT
DATEADD(dd, DATEDIFF(dd, 0, [Int_Date]),0) as [Int_Date]
,[Interaction]
,COUNT([Interaction]) as [Total_Repeats]
FROM [Interactions] (NOLOCK)
LEFT JOIN [user_table] (NOLOCK) ON [id] = [id]
WHERE [Int_Date] BETWEEN @StartDate AND @EndDate
AND [Lead] = @TL_ID
GROUP BY DATEADD(dd, DATEDIFF(dd, 0, [Int_Date]),0), [Interaction]
ORDER BY [Int_Date], [Total_Repeats] DESC
表2是[Interactions],如下所示:

Lead  ID
1     5
1     8
1     12
2     13
2     14
2     15
2     18
2     24
Int_Date    ID  Interaction
2012-03-01  5   Hang Up
2012-03-01  13  Reset
2012-03-01  8   Basic
2012-03-01  13  Basic
2012-03-02  14  Reset
2012-03-02  12  Advanced
2012-03-02  12  Hang Up
2012-03-02  24  Reset
2012-03-02  5   Basic
Repeat_d    ID  R_Interaction
2012-03-01  13  Reset
2012-03-01  8   Basic
2012-03-02  14  Reset
2012-03-02  12  Advanced
2012-03-02  24  Reset
DECLARE @StartDate smalldatetime, @EndDate smalldatetime, @TL_ID as smallint
SET @StartDate = '20120301'
SET @EndDate = '20120331'
SET @TL_ID = '2'
SELECT
DATEADD(dd, DATEDIFF(dd, 0, [Int_Date]),0) as [Int_Date]
,[Interaction]
,COUNT([Interaction]) as [Total_Repeats]
FROM [Interactions] (NOLOCK)
LEFT JOIN [user_table] (NOLOCK) ON [id] = [id]
WHERE [Int_Date] BETWEEN @StartDate AND @EndDate
AND [Lead] = @TL_ID
GROUP BY DATEADD(dd, DATEDIFF(dd, 0, [Int_Date]),0), [Interaction]
ORDER BY [Int_Date], [Total_Repeats] DESC
表3是[Repeats],看起来像:

Lead  ID
1     5
1     8
1     12
2     13
2     14
2     15
2     18
2     24
Int_Date    ID  Interaction
2012-03-01  5   Hang Up
2012-03-01  13  Reset
2012-03-01  8   Basic
2012-03-01  13  Basic
2012-03-02  14  Reset
2012-03-02  12  Advanced
2012-03-02  12  Hang Up
2012-03-02  24  Reset
2012-03-02  5   Basic
Repeat_d    ID  R_Interaction
2012-03-01  13  Reset
2012-03-01  8   Basic
2012-03-02  14  Reset
2012-03-02  12  Advanced
2012-03-02  24  Reset
DECLARE @StartDate smalldatetime, @EndDate smalldatetime, @TL_ID as smallint
SET @StartDate = '20120301'
SET @EndDate = '20120331'
SET @TL_ID = '2'
SELECT
DATEADD(dd, DATEDIFF(dd, 0, [Int_Date]),0) as [Int_Date]
,[Interaction]
,COUNT([Interaction]) as [Total_Repeats]
FROM [Interactions] (NOLOCK)
LEFT JOIN [user_table] (NOLOCK) ON [id] = [id]
WHERE [Int_Date] BETWEEN @StartDate AND @EndDate
AND [Lead] = @TL_ID
GROUP BY DATEADD(dd, DATEDIFF(dd, 0, [Int_Date]),0), [Interaction]
ORDER BY [Int_Date], [Total_Repeats] DESC
我需要能够做的是将来自[Interactions]的呼叫总数相加为每个交互类型和日期的总数,并按Lead和Int_Date=Repeat_d对它们进行分组

我希望结果看起来如何:

DATE       Lead  Total_Interactions  Total_Repeats  Interaction
2012-03-01    1                   1              0  Hang Up
2012-03-01    1                   2              1  Basic
2012-03-01    2                   1              1  Reset
2012-03-01    2                   1              0  Basic
2012-03-02    1                   1              1  Advanced
2012-03-02    1                   1              0  Hang Up
2012-03-02    1                   1              0  Basic
2012-03-02    2                   2              1  Reset
到目前为止,我的查询如下:

Lead  ID
1     5
1     8
1     12
2     13
2     14
2     15
2     18
2     24
Int_Date    ID  Interaction
2012-03-01  5   Hang Up
2012-03-01  13  Reset
2012-03-01  8   Basic
2012-03-01  13  Basic
2012-03-02  14  Reset
2012-03-02  12  Advanced
2012-03-02  12  Hang Up
2012-03-02  24  Reset
2012-03-02  5   Basic
Repeat_d    ID  R_Interaction
2012-03-01  13  Reset
2012-03-01  8   Basic
2012-03-02  14  Reset
2012-03-02  12  Advanced
2012-03-02  24  Reset
DECLARE @StartDate smalldatetime, @EndDate smalldatetime, @TL_ID as smallint
SET @StartDate = '20120301'
SET @EndDate = '20120331'
SET @TL_ID = '2'
SELECT
DATEADD(dd, DATEDIFF(dd, 0, [Int_Date]),0) as [Int_Date]
,[Interaction]
,COUNT([Interaction]) as [Total_Repeats]
FROM [Interactions] (NOLOCK)
LEFT JOIN [user_table] (NOLOCK) ON [id] = [id]
WHERE [Int_Date] BETWEEN @StartDate AND @EndDate
AND [Lead] = @TL_ID
GROUP BY DATEADD(dd, DATEDIFF(dd, 0, [Int_Date]),0), [Interaction]
ORDER BY [Int_Date], [Total_Repeats] DESC

任何帮助都将不胜感激。谢谢大家!

尝试以下查询:

DECLARE
    @StartDate SMALLDATETIME,
    @EndDate SMALLDATETIME,
    @TL_ID SMALLINT

SELECT
    @StartDate = '2012-03-01',
    @EndDate = '2012-03-31',
    @TL_ID = '2'

SELECT
    DATEADD(DD, DATEDIFF(DD, 0, [Int_Date]), 0) AS [Int_Date],
    u.[Lead],
    i.[ID],
    COUNT(1) + COUNT(r.[ID]) AS [Total_Interactions],
    COUNT(r.[ID]) AS [Total_Repeats],
    i.[Interaction]
FROM
    [Interactions] AS i WITH (NOLOCK)
JOIN
    [User_Table] AS u WITH (NOLOCK)
ON
    u.[ID] = i.[ID]
LEFT OUTER JOIN
    [Repeats] AS r WITH (NOLOCK)
ON
    r.[ID] = i.[ID]
AND r.[Repeat_d] = i.[Int_Date]
AND r.[R_Interaction] = i.[Interaction]
WHERE
    i.[Int_Date] BETWEEN @StartDate AND @EndDate
AND u.[Lead] = @TL_ID
GROUP BY
    DATEADD(DD, DATEDIFF(DD, 0, [Int_Date]), 0),
    u.[Lead],
    i.[ID],
    i.[Interaction]
ORDER BY
    [Int_Date],
    u.[Lead],
    i.[ID],
    [Total_Repeats] DESC

查看此处的实际操作:

因此,根据您的要求,您需要在任何给定的一天中寻找每个潜在客户的互动量。第二天发生的交互不在此处的范围内。对吗?