【问题标题】:Using MIN in where clause在 where 子句中使用 MIN
【发布时间】:2016-10-19 10:00:32
【问题描述】:

尝试更改以下代码以允许我在 where 子句中使用 min

SELECT od.personID
,'Uno' AS [CustomerType]
FROM dbo.orderDetails od
WHERE od.orderDate BETWEEN CONVERT(date, '2016-02-01') AND @StartDate
AND MIN(odd.orderDate) BETWEEN CONVERT(date, '2016-02-01') AND @StartDate)
GROUP BY personID

【问题讨论】:

标签: sql tsql min


【解决方案1】:

MIN 移动到HAVING 部分

SELECT od.personID
,'Uno' AS [CustomerType]
FROM dbo.orderDetails od
WHERE od.orderDate BETWEEN CONVERT(date, '2016-02-01') AND @StartDate     
GROUP BY personID
HAVING MIN(odd.orderDate) BETWEEN CONVERT(date, '2016-02-01') AND @StartDate

【讨论】:

  • 只是一个简单的问题,即有条款中的陈述意味着该人的第一次订购日期在该日期期间对吗?只是澄清
  • 如果我在 having 子句中添加声明 COUNT(PersonID) = 1 将结果仅限于那些只购买一次的客户?
  • 是的,但我会使用AND COUNT(orderDate) = 1orderID 让您在计数时更具可读性;)。
  • 啊,当然。干杯谢谢。
猜你喜欢
  • 2018-01-15
  • 2013-07-30
  • 1970-01-01
  • 2011-08-07
  • 2012-03-25
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
相关资源
最近更新 更多