2017-12-20 2 views
-2

これが可能かどうかわかりませんが、SQL Serverのエイリアス列に参加しようとしています。SQLサーバーのエイリアス列名へのSQL結合

以下のJOINを変更することはできますか?

JOIN 
    #LOGFILE ON #CSIQUESTIONLOG.LogSeqNo = #LOGFILE.[SEQ2] 
      AND #LOGFILE.Contcode = 'WCM' 

JOIN 
    #LOGFILE ON #CSIQUESTIONLOG.LogSeqNo = #LOGFILE.Seq 
      AND #LOGFILE.Contcode = 'WCM' 

だから、SEQ2列に合流 - ないSEQ列、およびので、私は唯一の下に1つのクエリ

サンプル・データを実行する必要があります。

IF OBJECT_ID('tempdb..#CSIQUESTIONLOG') IS NOT NULL 
    DROP TABLE #CSIQUESTIONLOG 

SELECT * 
INTO #CSIQUESTIONLOG 
FROM (VALUES ('BA', '2017-01-01','123451', '185', 2), 
      ('BA', '2017-01-01','123452', '185', 4), 
      ('BA', '2017-01-01','123453', '184', 1), 
      ('BA', '2017-01-01','123454', '183', 3), 
      ('BA', '2017-01-01','123455', '182', 5), 
      ('BA', '2017-01-01','123456', '181', 0), 
      ('BA', '2017-01-01','123457', '182', 1), 
      ('BA', '2017-01-01','7684417', '180', 2)) d (Dealer, Created, Logseqno, CSIseqno, Answer) 

IF OBJECT_ID('tempdb..#LOGFILE') IS NOT NULL 
    DROP TABLE #LOGFILE 

SELECT * 
INTO #LOGFILE 
FROM (VALUES (7684417, 'BA', 498, 'WCM', 1261723), 
      (7669984, 'BA', 38, 'CSI', 1261723), 
      (7685141, 'BA', 400, 'WCM', 1261750), 
      (7686369, 'BA', 193, 'CSI', 1261750), 
      (7692571, 'BA', 401, 'WCM', 1262289), 
      (7700336, 'BA', 38, 'CSI', 1262289)) d (Seq, Dealer, OpNum, Contcode, ContSeqNo) 

SELECT 
    a.*, x.Seq AS [SEQ2] 
FROM 
    #LOGFILE a 
OUTER APPLY 
    (SELECT Seq 
    FROM #LOGFILE b 
    WHERE b.ContSeqNo = a.ContSeqNo AND b.ContCode = 'CSI') x 

最終クエリ:

SELECT 
    #CSIQUESTIONLOG.Created, #CSIQUESTIONLOG.CSIseqno, 
    #LOGFILE.OpNum, 
    COUNT (*) AS TOTAL 
FROM 
    #CSIQUESTIONLOG 
JOIN 
    #LOGFILE ON #CSIQUESTIONLOG.LogSeqNo = #LOGFILE.Seq 
      AND #LOGFILE.Contcode = 'WCM' 
GROUP BY 
    #CSIQUESTIONLOG.Created, #CSIQUESTIONLOG.CSIseqno, #LOGFILE.OpNum 

答えて

0

最初に、最後のクエリでは列にはSeq2が含まれていません。それらは2つの別々のクエリであり、したがって相互に相互作用することはできません。

予期せぬ結果セットがなければ、私はちょうど私がと信じてを信じています。そうでない場合は、期待した結果セットを投稿してください。

SELECT QL.Created, 
     QL.CSIseqno, 
     LF2.OpNum, --Not sure if this should be LF1, or LF2. Guessed 2 
     COUNT (*) AS TOTAL 
FROM #CSIQUESTIONLOG QL 
    JOIN #LOGFILE LF1 ON QL.LogSeqNo = LF1.Seq AND LF1.Contcode = 'WCM' 
    JOIN #LOGFILE LF2 ON LF1.ContSeqNo = LF2.ContSeqNo AND LF2.ContCode = 'CSI' 
GROUP BY QL.Created, --You were completely missing your GROUP BY 
     QL.CSIseqno, 
     LF2.OpNum; 
関連する問題