Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 一列中两个不同条件的总和_Sql_Sql Server_Ssms - Fatal编程技术网

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

我有一个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 
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,非常感谢