2016-07-22 2 views
-1

에서 다른 결과를 제공합니다그룹에 의해 내가이있는 SQL

SELECT ([Document No_]) 
FROM [Verploegen POC$Sales Line] 
--WHERE [Shipment Date] = '2014-05-08' 
GROUP BY [Document No_] 
--[Shipment Date] 
--[Document No_], 
HAVING COUNT(*) > 1 

를 다시 나에게 272,160 결과를 제공합니다.

하지만 이렇게 할 경우 :

SELECT ([Document No_]), [Shipment Date] 
FROM [Verploegen POC$Sales Line] 
--WHERE [Shipment Date] = '2014-05-08' 
GROUP BY [Document No_], [Shipment Date] 
--[Shipment Date] 
--[Document No_], 
HAVING COUNT(*) > 1 

가 반환

267661. 어떻게 그 수 있는가? 내가 36 개 결과 돌아갈

SELECT ([Document No_]), [Shipment Date] 
FROM [Verploegen POC$Sales Line] 
WHERE [Shipment Date] = '2012-01-01' 

: 나는 이렇게 할 경우

당신에게

감사드립니다. 하지만 다음과 같은 복식이 있습니다 :

V004180 2012-01-01 00:00:00.000 
V004182 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 

그래서 나는 두 배로 delte하려고합니다. 그러나이 경우에는 헤더가있는 트리 결과 (고유 값)를 반환하는 방법 : 문서 번호 및 발송 날짜? 내가 이렇게하면

당신에게

감사합니다

SELECT ( [Document No_]), [Shipment Date], COUNT(*) as count 
FROM [Verploegen POC$Sales Line] 
WHERE [Shipment Date] = '2012-01-01' 
GROUP BY [Document No_], [Shipment Date] 


SELECT ( [Document No_]), COUNT(*) as count 
FROM [Verploegen POC$Sales Line] 
WHERE [Shipment Date] = '2012-01-01' 
GROUP BY [Document No_] 

그것은 정확히 같은 결과

+2

erm ... 다른 검색어이기 때문에 ...! – Tanner

+0

하지만 헤더 발송일을 추가합니다. 그래서 No_ 및 발송일 문서를 보여 드리고자합니다. –

+0

데이터가 어떻게 생겼는지는 알 수 없지만 다른 열이있는 그룹을 만들면 다른 수의 결과가 표시됩니다. – Tanner

답변

1

마우스 오른쪽을 반환합니다!

두 가지 다른 쿼리를 실행 중입니다.

Document_No 만, 두 필드 Document_No 출하 일

대한 예에 의해 제 2 그룹에 의해 첫 번째 그룹.

는이 datas 있다고 가정합시다 :

Document No | Shipment Date 
    1  | 2015-01-01 
    2  | 2015-01-01 
    1  | 2016-01-01 

첫 번째 쿼리가 2 개 행 반환

두 번째 쿼리 반환 (문서 번호에 의해 그룹을, 그래서를 첫 번째와 세 번째 행은 접힌 두 번째 행) 3 행 (Docvument 번호 및 발송일 별 그룹은 세 가지 조합입니다).

재미있는 질문은 ... 같은 문서 번호에 대해 행이 더 많은 테이블을 사용하는 방법은 무엇입니까? 왜 동일한 문서 번호에 대해 다른 발송 날짜가 있습니까?

1

두 가지 다른 쿼리가 있으므로 두 가지 결과 집합이 놀랄 일이 아닙니다.

원시 데이터 : 정말 간단한 예에서 방금 Document No에 의해 그룹화 수를 할 경우

Document No | Shipment Date 
----------------------------- 
    1  | 2016-07-22 
    1  | 2016-07-23 
    2  | 2016-07-22 

, 당신은 얻을 것이다 :

SELECT [Document No], COUNT(*) AS Count 
FROM T 
GROUP BY [Document No]; 

Document No | Count 
----------------------------- 
    1  | 2 
    2  | 1 

을 따라서 만 남아있을 것 HAVING COUNT(*) > 1을 적용한 후 Document No이 1 인 레코드로

당신은 쿼리에 발송 날짜를 추가하는 경우 :

SELECT [Document No], [Shipment Date], COUNT(*) AS Count 
FROM T 
GROUP BY [Document No], [Shipment Date]; 

Document No | Shipment Date | Count 
-------------------------------------- 
    1  | 2016-07-22 | 1 
    1  | 2016-07-23 | 1 
    2  | 2016-07-22 | 1 

을 당신이 어떤 행이 남아있는 HAVING COUNT(*) > 1 절을 적용 그래서 후에. 이 때문에 두 번째 쿼리의 행 수가 첫 번째 쿼리보다 적습니다. 여담으로

, 나는 강하게 당신이 공백과 기호 개체 이름을 만드는 중지 건의 할 것입니다. 그것은 조금 주관적이다, 파스칼 경우는 괜찮 내 생각에, 나는 DocumentNo[Document No_]보다 덜 읽을 것을 볼 수 없습니다 , 그리고 쓰기가 상당히 쉬워졌습니다. 최악의 경우 (나는 그것을 좋아하지 않지만 그것이 대중적이라는 것을 알고있다) 단어 분리를위한 공간이 아닌 밑줄을 사용해야하므로 결국 Document_No이된다. 당연히이 시스템을 상속했다가 변경하기에는 너무 늦은 경우 최소한 크리스마스 카드 목록에서이 테이블의 원본 작성자를 가져와야합니다!

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 나는 게시물을 제출했다 –

+0

내 게시물을 확인, 예 –

+0

나는 편집을 보았지만, 나는 아직도 당신이 무엇을 요구하고 있는지 확신하지 못한다. 나는 컬럼별로 그룹이 다를 때 다른 결과를 얻는 이유에 대한 예를 설명했다. 당신은 정확히 무엇을하려하고 있으며, 어떤 문제가 있습니까? – GarethD