如果有多行,则仅运行SQL Query

时间:2017-09-07 13:29:41

标签: sql sql-server sql-server-2008

我有一个类似于下面的表 - OrderStatusId是表上的PK。 StatusId是参考表的FK,包含所有可能的状态。 CustomerId是客户详细信息表的FK

OrderStatusId StatusId CustomerId DateModified
1               1          1        05/09/2017
2               1          1        06/09/2017
3               2          1        07/09/2017
4               1          2        07/09/2017

我想要做的是在下面运行此查询,为状态ID = 1的该客户选择最近的修改日期。但是,如果StatusId =计数大于1,我只想运行此查询1为该客户。因此,在上面的示例表中,我预计06/09/2017将返回CustomerId 1,但不会返回给CustomerId 2.我尝试了计数(*)> 1条款但无法使其正常工作。

SELECT TOP(1) os.DateModified AS LastModifiedDateForm
FROM [myTable].[OrderStatus] os WHERE os.CustomerId = 1 AND os.StatusID = 1 
ORDER BY os.DateModified DESC

3 个答案:

答案 0 :(得分:4)

你能用MAX而不是前1吗?或者你回来了更多的专栏?

SELECT MAX(os.DateModified) AS LastModifiedDateForm
FROM   [myTable].[OrderStatus] os
WHERE  os.CustomerId = 1
       AND os.StatusID = 1
GROUP BY CustomerId,
         StatusId
HAVING COUNT(*) > 1

答案 1 :(得分:1)

也许您是在每个客户的最长日期之后,只有他们有多个日期?

select max(os.DateModified) AS LastModifiedDateForm
from [myTable].[OrderStatus] os
group by os.CustomerId
having count(1) > 1 

这只会为当前情况下ID为1的客户提供数据,或者为其他一些样本数据提供超过1行的其他客户ID。

答案 2 :(得分:0)

使用onChange

的另一种方法
TypeError: _onChange is not a function

立即为所有客户服务