2012-05-03 28 views
0

SQL Server 2005を使用しています。3つのテーブルで情報を収集しようとしています。複数のフィールドに3つのテーブルを結合する - SQL Server

表1は、[User_Table]であり、次のようになります。表2は、[相互作用]であり、のように見える

Lead ID 
1  5 
1  8 
1  12 
2  13 
2  14 
2  15 
2  18 
2  24 

:表3は、[リピート]ある

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 

次のようになります。

私は結果を見てみたいどのように行うことができるように必要なもの210

SUMは、相互作用の種類と日あたりの合計として[相互作用]からの総通話で、グループにそれらをリード、およびInt_Date = Repeat_d

すべてのヘルプははるかに高く評価されるだろう

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 

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 

私のクエリは、これまでのように見えます。ありがとうございました!

+1

だからあなたが求めてきたものをもとに、あなたが任意の日に、リードあたりの相互作用の量を探しています。翌日に発生する相互作用は、ここでは範囲に含まれていません。あれは正しいですか? – swasheck

+0

はいいいえ – Brad

答えて

0

は、次のクエリを試してみてください。

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 

は、ここでは、アクションでそれを参照してください:http://data.stackexchange.com/stackoverflow/query/68935/joining-3-tables-on-multiple-fields-sql-server

関連する問題