2017-12-20 1 views
-2

가능하지만 SQL Server의 별칭 열에 조인하려는 경우 확실하지 않습니다.SQL 서버의 별칭 열 이름에 대한 SQL 조인

아래의 JOIN을 변경할 수 있습니까?

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

to

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

그래서 그것은 SEQ2 열을 조인 -하지 SEQ 열, 그래서 나는 단지 하나 개의 쿼리를 아래

샘플 데이터 실행해야합니다 :

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 열이 없습니다. 그것들은 두 개의 분리 된 질의이므로 서로 상호 작용할 수 없습니다.

예상 결과가 없으면 나는 단지 라고 믿는 SQL을 chanegd했습니다. 그렇지 않은 경우 예상 결과 집합을 게시하십시오.

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;