在字段的基础上创建日期范围

时间:2018-07-12 14:59:34

标签: sql-server tsql

我将下表作为输入

CREATE TABLE #Temp11
(
    Field1              INT,
    Date1               DATETIME,
    Status1             VARCHAR(50),
    Status2             VARCHAR(50),
    Status3             VARCHAR(50),
    Status4             VARCHAR(50),
    ConcatStatus        VARCHAR(1000)
)


INSERT INTO #Temp11 VALUES(111 , '2018-01-05' , 'Yes' , 'Yes' , 'Yes' , 'Yes','');
INSERT INTO #Temp11 VALUES(111 , '2018-01-06' , 'Yes' , 'Yes' , 'Yes' , 'Yes','');
INSERT INTO #Temp11 VALUES(111 , '2018-01-07' , 'Yes' , 'Yes' , 'Yes' , 'Yes','');

INSERT INTO #Temp11 VALUES(111 , '2018-01-11' , 'No' , 'No' , 'No' , 'No','');
INSERT INTO #Temp11 VALUES(111 , '2018-01-12' , 'Yes' , 'Yes' , 'Yes' , 'Yes','');
INSERT INTO #Temp11 VALUES(111 , '2018-01-13' , 'No' , 'No' , 'No' , 'No','');

INSERT INTO #Temp11 VALUES(111 , '2018-01-17' , 'No' , 'No' , 'No' , 'No','');
INSERT INTO #Temp11 VALUES(111 , '2018-01-18' , 'No' , 'No' , 'No' , 'No','');
INSERT INTO #Temp11 VALUES(111 , '2018-01-19' , 'No' , 'No' , 'No' , 'No','');

现在,我要关注输出

FromDate    |ToDate     |Status1    |Status2    |Status3    |Status4
====================================================================
05-Jan      |07-Jan     |Yes        |Yes        |Yes        |Yes
08-Jan      |10-Jan     |NULL       |NULL       |NULL       |NULL
11-Jan      |11-Jan     |No         |No         |No         |No
12-Jan      |12-Jan     |Yes        |Yes        |Yes        |Yes
13-Jan      |13-Jan     |No         |No         |No         |No
14-Jan      |16-Jan     |NULL       |NULL       |NULL       |NULL
17-Jan      |19-Jan     |No         |No         |No         |No

这里的逻辑是 如果所有状态都相同,则应将Date1字段转换为Date Rage 并且缺少的日期范围应为空值

例如,对1月5日,6月1日,7月1日的记录在四个状态文件中都具有相同的值,它们被合并并指定了5月5日至7月1日的日期范围。

我试图将所有状态串联起来,然后尝试应用分区并重复以上操作,但是它不起作用。

1 个答案:

答案 0 :(得分:0)

我确定可以缩短/优化它,但这是一个解决方案。唯一的问题是,如果有很多数据,您可能将不得不与MAXRECURSION混淆。

   "react": "16.4.1",
   "react-native": "0.56.0",
   "react-native-admob": "^2.0.0-beta.5",
   "react-native-fbsdk": "^0.7.0",
    "react-navigation": "^2.6.2"