Sql 一列中两个不同条件的总和
我有一个T-SQL查询Sql 一列中两个不同条件的总和,sql,sql-server,ssms,Sql,Sql Server,Ssms,我有一个T-SQL查询 SELECT ProductId, SUM(Quantity) AS Quantity FROM ProductStockIn WHERE OrgName = @OrgName AND Statecode = 'ADD' OR Statecode = 'ORDER' AND CreatedOn BETWEEN DATEADD(MS, 3, @LastGenerationDate) AND @GenerationDate
SELECT
ProductId, SUM(Quantity) AS Quantity
FROM
ProductStockIn
WHERE
OrgName = @OrgName
AND Statecode = 'ADD' OR Statecode = 'ORDER'
AND CreatedOn BETWEEN DATEADD(MS, 3, @LastGenerationDate) AND @GenerationDate
GROUP BY
ProductId) stockin ON p.ProductId = stockin.ProductId
我有这种桌子
|quantity | StateCode | CreatedOn |
+---------+-----------+-----------+
|400 | ORDER | <date> |
|400 | ADD | <date> |
|数量|状态代码|创建|
+---------+-----------+-----------+
|400 |订单||
|400 |添加||
我想对StateCode等于“订单”和“添加”的所有数量求和,但在我的查询中它只选择StateCode=Add。。当我尝试条件StateCode='ADD'和StateCode='ORDER'时,没有选择任何内容。您可以尝试以下方法-
SELECT ProductId, SUM(Quantity) AS Quantity
FROM ProductStockIn
WHERE OrgName = @OrgName AND Statecode in( 'ADD','ORDER')
AND CreatedOn BETWEEN DATEADD(MS,3,@LastGenerationDate)
AND @GenerationDate
GROUP BY ProductId
having count(distinct Statecode)=2
非常感谢,它解决了我的问题,我可以再问一件事吗:我的CreatedOn列有:'2020-11-04 01:48:42.400''2020-11-04 01:41:03.203''2020-11-04 01:49:18.403'我有一个-LastGenerationDate等于2020-11-03 00:00:00.00和-GenerationDate等于'2020-11-04 00:00:00.00'我的查询无法选择这三行CreatedOn,除非我将我的-GenerationOn设置为'2020-11-04 23:59:00.00',那么你想对日期和时间做什么@当GenerationOn等于'2020-11-04 00:00:00.00'时,MCMXCVIIII希望选择这三个选项。因为这段代码是在午夜自动运行的,所以我假设它是12:00AM或00:00:000。我现在知道了,我不能选择那三行,因为它大于2020-11-04 2020 00:00:00,非常感谢