我在 SQL Server 2005 中的数据库:
我的查询是:
SELECT *
FROM TRADEFILE
WHERE CONVERT(DATETIME,SAUDA_DATE) LIKE 'MAR 1 2013%'
AND SCRIP_CODE='DLF' AND INST_TYPE LIKE 'FUT%'
这给了我结果:
在此买入=1,卖出=2。
如果我们计算购买数量的总和,即 buy_sell=1 那么它是 3000
当我们为卖出交易数量计算总和时,即 buy_sell=2 那么它是 3000
但是,当我触发此查询以获得相同的结果时,如下所示:
select
CONVERT(VARCHAR(11),sauda_date) AS sauda_date,
SUM(CASE
WHEN Buy_sell = 1 and scrip_code='DLF'
and Sauda_Date between convert(datetime,'01/03/2013')
and convert(datetime,'06/04/2013')
THEN Trade_Qty ELSE 0 END) AS BuyQty,
SUM(CASE
WHEN Buy_sell = 2 and scrip_code='DLF'
and Sauda_Date between convert(datetime,'01/03/2013')
and convert(datetime,'06/04/2013')
THEN Trade_Qty ELSE 0 END) AS SellQty ,
SUM(CASE
WHEN Buy_sell = 1 and scrip_code='DLF'
THEN Trade_Qty ELSE 0 END)
-SUM(CASE
WHEN Buy_sell = 2 and scrip_code='DLF'
THEN Trade_Qty ELSE 0 END) AS CarryForword
from tradefile
where scrip_code='DLF'
group by CONVERT(VARCHAR(11),sauda_date)
它给了我结果:
即 BuyQty=5000,sellQty 为 4000,而我们分别计算为 3000 和 3000。
怎么可能不同?我的 sum() 函数工作错了吗?
我的查询是错误的吗?