2016-12-19 2 views
0

다른 답변을 검색했지만 기대했던대로 작동하지 않았습니다.SQL Server 간단한 SUM 쿼리가 예상 결과를 반환하지 않음

내 쿼리 :

SELECT 
    CONVERT(VARCHAR(18),[Trx_Date],110) AS Date 
    ,[TRX_TYPE] 
    ,SUM([QUAN]) AS QUANt 
    FROM [VM].[dbo].[INVTRX] 
    WHERE SKU='7342761' AND TRX_TYPE!='S' AND TRX_DATE BETWEEN '12-15-2016' AND '12-18-2016' AND ID_CONT=557 
    GROUP BY QUAN, Trx_Type, TRX_DATE 

내 결과 :

날짜 ---- TRX_TYPE ---- 퀀트

2016년 12월 15일 ---- PT - - 48.0000

2016년 12월 16일 PT ---- ---- 78.0000

2016년 12월 16일 ---- PT ---- 90.0000

내가 무엇을 찾고 있어요 :

날짜 ---- TRX_TYPE ---- 퀀트

12 15-2016 ---- PT ---- 48.0000

2016년 12월 16일 ---- PT ---- 또한 ​​168.0000

, 보너스 질문 : 어떻게 포맷 테이블에 할 스택 오버플로 ?

도움 주셔서 감사합니다.

+1

'그룹 by'에서 'QUAN'을 제거하십시오. –

+0

고마워, 실제로 여러 수정 프로그램을 시도하는 동안 그것을 추가했습니다. 나는 그것을 제거했지만 더 큰 문제는 아래에 지적 된 바와 같이 변환 된 날짜를 사용하는 것이었다. – escapeclaws

답변

1
SELECT 
    CONVERT(VARCHAR(18),[Trx_Date],110) AS Date 
    ,[TRX_TYPE] 
    ,SUM([QUAN]) AS QUANt 
    FROM [VM].[dbo].[INVTRX] 
    WHERE SKU='7342761' AND TRX_TYPE!='S' AND TRX_DATE BETWEEN '12-15-2016' AND '12-18-2016' AND ID_CONT=557 
    GROUP BY Trx_Type, Trx_Date; 
+0

완벽하게 작동했습니다. 그런 쉬운 감시. 가능한 빨리 답변 해 드리겠습니다 (10 분) – escapeclaws

1

날짜에 시간 구성 요소가있는 것 같습니다. 난 그냥 문자열이 아닌 date로 변환 제안 :

SELECT CAST([Trx_Date] AS Date), TRX_TYPE 
     SUM(QUAN) AS QUANT 
FROM [VM].[dbo].[INVTRX] i 
WHERE SKU = '7342761' AND 
     TRX_TYPE <> 'S' AND 
     TRX_DATE >= '2016-12-15' AND 
     TRX_DATE < '2016-12-19' AND 
     ID_CONT = 557 
GROUP BY CAST([Trx_Date] AS Date), Trx_Type; 

참고 :

  • 시간 구성 요소를 제거하기 위해 date로 변환합니다.
  • GROUP BY의 표현식을 반복해야합니다.
  • 날짜 상수의 경우 YYYYMMDD 또는 YYYY-MM-DD와 같은 ISO 표준 형식을 사용하십시오.
  • 날짜에 시간 구성 요소가있는 것으로 보이는 경우 BETWEEN을 사용하지 마십시오.
  • GROUP BY에 집계되지 않은 열만 포함하십시오.
+0

감사합니다. 추가 정보를 제공해 주셔서 감사합니다. 날짜에 시간 구성 요소가있을 때 왜 사용하지 말아야하는지 묻겠습니다. 또한 <> 대! =에 대한 환경 설정이 있습니까? 나는 분명히 학습 단계에 있으며 가능한 경우 표준을 고수하고 싶습니다. – escapeclaws

관련 문제