Sql 由于datediff函数介于两者之间而导致的日期问题

Sql 由于datediff函数介于两者之间而导致的日期问题,sql,database,sql-server-2005,join,Sql,Database,Sql Server 2005,Join,我有以下疑问: SELECT datediff(d, 0, sauda_date), Scrip_Code, SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty ELSE 0 END) AS BuyQty, SUM(CASE WHEN Buy_sell = 1 THEN Market_Rate ELSE 0 END) AS BuyRate, SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty * M

我有以下疑问:

SELECT   
  datediff(d, 0, sauda_date),
  Scrip_Code,
  SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty   ELSE 0 END) AS BuyQty, 
  SUM(CASE WHEN Buy_sell = 1 THEN Market_Rate ELSE 0 END) AS BuyRate, 
  SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty * Market_Rate ELSE 0 END) AS BuyAmount,
  SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty ELSE 0 END) AS SellQty, 
  SUM(CASE WHEN Buy_sell = 2 THEN Market_Rate ELSE 0 END) AS SellRate,
  (CASE WHEN SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty ELSE 0 END) >
             SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty ELSE 0 END) THEN 'BF' 
      ELSE 'BT' END ) as TradeType, 
  SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty * Market_Rate ELSE 0 END) AS SellAmount, 
  SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty ELSE 0 END) - 
  SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty ELSE 0 END) as NETQTY,
  SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty * Market_Rate ELSE 0 END) - 
  SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty * Market_Rate ELSE 0 END)as NetAmt,
  SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty * Market_Rate ELSE 0 END) - 
  SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty * Market_Rate ELSE 0 END) as PNLAmt 
FROM tradeFile 
where Inst_Type = 'FUTIDX' 
   OR Inst_Type='FUTSTK' 
  and Sauda_Date = convert(datetime,'1 Mar 2013') 
group by Scrip_Code, ExpiryDate, datediff(d,0,sauda_date)
结果:

此查询用于按日期获取购买数量和出售数量的总和。[参考此任务:

但是我们可以看到datediff(d,0,sauda_date)列(即第一列)给了我一些结果,但是我想在这个结果中添加sauda_date作为日期

我应该在此查询中进行哪些更改

我尝试在查询中直接添加sauda_日期,但它给了我错误


请为我提供指导。

如果在查询中使用
分组依据
,则(对于T-SQL)在查询的字段部分,只能使用
分组依据
中的字段或聚合函数(
求和
计数
,…)。因此,您不能只添加
sauda\u日期
。您应该使用聚合函数添加它。例如
MIN(sauda\u日期)
。或者您可以将其按部分添加到组中。

不确定您的结果要求

简单地将sauda_日期添加到选择列表中不会出现错误,如果您将其包含在分组列表中,我已经尝试了belwo及其工作方式

Select datediff(d,0,f.Date), 
       sum(f.price), 
      f.OrderID,
       f.Date
from test f
group by f.Date,OrderID,datediff(d,0,f.Date)
否则 您可以使用self join在键列上仅获取sauda date join主结果