SQL Server简单求和查询未返回预期结果

SQL Server简单求和查询未返回预期结果,sql,sql-server,Sql,Sql Server,我已经搜索了一些其他的答案,但是没有得到我期望的结果 我的问题是: 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

我已经搜索了一些其他的答案,但是没有得到我期望的结果

我的问题是:

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_类型-QUANt

12-15-2016-PT-48.0000

12-16-2016-PT-78.0000

12-16-2016-PT-90.0000

我要找的是:

日期-TRX_类型-QUANt

12-15-2016-PT-48.0000

12-16-2016-PT-168.0000

另外,还有一个额外的问题:如何格式化Stackoverflow上的表


谢谢你的帮助

日期上似乎有时间成分。我建议只转换为日期而不是字符串:

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;
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;
注:

转换为日期以删除时间组件。 您需要在GROUP BY中重复该表达式。 对于日期常量,请使用ISO标准格式,如YYYYMMDD或YYYY-MM-DD。 如果你的日期有一个时间成分,那么不要使用BETWEEN。 仅包括分组依据中的未聚合列。
日期上似乎有一个时间部分。我建议只转换为日期而不是字符串:

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;
注:

转换为日期以删除时间组件。 您需要在GROUP BY中重复该表达式。 对于日期常量,请使用ISO标准格式,如YYYYMMDD或YYYY-MM-DD。 如果你的日期有一个时间成分,那么不要使用BETWEEN。 仅包括分组依据中的未聚合列。
从群中移除QUAN by。谢谢,实际上我只是在尝试各种修复时添加了这一点。我确实删除了它,但更大的问题是使用了下面指出的转换日期。请从group by中删除QUAN。谢谢,我只是在尝试各种修复时添加了这一点。我确实删除了它,但更大的问题是使用下面指出的转换日期。谢谢你,这非常有效。这么容易疏忽。我会在10分钟内接受你的回答谢谢你这工作做得很好。这么容易疏忽。10分钟后我会接受你的回答谢谢你提供更多信息,这很有帮助。我想请问,当日期包含时间成分时,为什么不应该使用between?另外,对VS!=,是否有偏好?我显然处于学习阶段,希望尽可能遵守标准。感谢您提供的补充信息,这是很有帮助的。我想请问,当日期包含时间成分时,为什么不应该使用between?另外,对VS!=,是否有偏好?我显然处于学习阶段,如果可能的话,我愿意遵守标准。