我将下表作为输入
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日的日期范围。
我试图将所有状态串联起来,然后尝试应用分区并重复以上操作,但是它不起作用。
答案 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"