我一直在使用您在2010年发布的答案来了解如何使用CTE来识别SQL中连续几个月的订单。我终于把头脑包裹在这个查询的大部分内容中,但是不了解最后几行,以及为什么选择你所做的日期。
TSQL Finding Order that occurred in 3 consecutive months
WHERE 存在( 选择1 从 锚A 哪里 O.CustID = A.CustID AND O.OrderDate> = DateAdd(月,A.Ind,'19991201') 和O.OrderDate< DateAdd(月,A.Ind,'20000301')
为什么选择19991201和20000301的日期?
非常感谢。我希望你有机会回应。理解这一点将为我开启一个全新的理解层。
迈克尔
答案 0 :(得分:0)
19991201和20000301是YYYYMMDD格式的日期,而where子句使用MONTH。
所以,如果你需要连续3个月你会得到你写的where子句的Dec / 99,Jan / 2000和Feb / 2000。