【发布时间】:2015-08-11 19:13:11
【问题描述】:
我需要一些关于在 SQL Server 2012 中使用 ROW_NUMBER() 和 BETWEEN 的指导。
我写了以下代码:
SELECT DISTINCT
*,
CASE WHEN (row_number() OVER BETWEEN (PARTITION BY LocationCode
ORDER BY startdate ASC) AND EndDate) = 1
THEN 1 ELSE 0
END AS Testr,
FROM
Table
目的是用 1 ELSE 0 标记那些 locationCode BETWEEN MIN(startDate) AND EndDate。
我该怎么做?
我添加了一个表格:这就是它现在的样子
LocationCode StartDate EndDate
10808247 20140617 20140701
10808247 20140618 20140701
10808247 20140618 20140701
10808247 20140617 20140701
10808247 20140709 20140801
目标:
LocationCode StartDate EndDate New
10808247 20140617 20140701 1
10808247 20140618 20140701 1
10808247 20140618 20140701 1
10808247 20140617 20140701 1
10808247 20140709 20140801 0
New 列的最后一行为零,因为它在 EndDate 之外。
【问题讨论】:
-
你为什么要使用
ROW_NUMBER? -
我不确定还有什么其他方法可以解决我从今天早上开始一直在处理的问题。基本上,这就是我需要做的。如何编码,我觉得有点难。
-
请提供示例。值通常总是大于或等于最小值,而且很难弄清楚 EndDate 是什么
-
您将
min(startdate)和enddate与什么进行比较? -
如何将
LocationCode与Date进行比较?这就是我正在努力解决的部分。
标签: sql sql-server sql-server-2012 row-number