Работаю над 2 наборами данных. Первый сохраняет статус истории всей учетной записи. Он держит движение от А до Я до D и обратно A и т.д.История AccountStatus
Обратите внимание: = Активной, I = Неактивной, D = Дремлющего
смотрите таблицу структуры здесь
DECLARE @accountstatus_hist TABLE (ACID varchar(20), FORACID VARCHAR(20), old_status varchar(1), current_status varchar(1), [current_status_date] DATE, prev_status_date date)
INSERT INTO @accountstatus_hist
select '423156568', '2xxxxxxxx1','A','I','2014-06-30','2013-07-22' union all
select '423156568', '2xxxxxxxx1','I','A','2014-12-31','2014-06-30'
select * from @accountstatus_hist
г. Второй это таблица истории транзакций.
DECLARE @fact_hist TABLE (FullDate date, FORACID VARCHAR(20), ActualBalance decimal(32,5))
INSERT INTO @fact_hist
SELECT '2014-01-31','2xxxxxxxx1', 2595.53000 union all
SELECT '2014-01-31','2xxxxxxxx1', 311.46360 union all
SELECT '2014-01-31','2xxxxxxxx1', 77.86590 union all
SELECT '2014-02-28','2xxxxxxxx1', 77.99790 union all
SELECT '2014-02-28','2xxxxxxxx1', 311.99160 union all
SELECT '2014-02-28','2xxxxxxxx1', 2599.93000 union all
SELECT '2014-03-31','2xxxxxxxx1', 312.47040 union all
SELECT '2014-03-31','2xxxxxxxx1', 2603.92000 union all
SELECT '2014-03-31','2xxxxxxxx1', 78.11760 union all
SELECT '2014-04-30','2xxxxxxxx1', 78.28800 union all
SELECT '2014-04-30','2xxxxxxxx1', 2609.60000 union all
SELECT '2014-04-30','2xxxxxxxx1', 313.15200 union all
SELECT '2014-05-31','2xxxxxxxx1', 2618.10000 union all
SELECT '2014-05-31','2xxxxxxxx1', 78.54300 union all
SELECT '2014-05-31','2xxxxxxxx1', 314.17200 union all
SELECT '2014-06-30','2xxxxxxxx1', 78.78300 union all
SELECT '2014-06-30','2xxxxxxxx1', 2626.10000 union all
SELECT '2014-06-30','2xxxxxxxx1', 315.13200 union all
SELECT '2014-07-31','2xxxxxxxx1', 395.00250 union all
SELECT '2014-07-31','2xxxxxxxx1', 79.00050 union all
SELECT '2014-07-31','2xxxxxxxx1', 2633.35000 union all
SELECT '2014-08-31','2xxxxxxxx1', 79.24590 union all
SELECT '2014-08-31','2xxxxxxxx1', 396.22950 union all
SELECT '2014-08-31','2xxxxxxxx1', 2641.53000 union all
SELECT '2014-09-30','2xxxxxxxx1', 2648.05000 union all
SELECT '2014-09-30','2xxxxxxxx1', 397.20750 union all
SELECT '2014-09-30','2xxxxxxxx1', 79.44150 union all
SELECT '2014-10-31','2xxxxxxxx1', 398.21850 union all
SELECT '2014-10-31','2xxxxxxxx1', 2654.79000 union all
SELECT '2014-10-31','2xxxxxxxx1', 79.64370 union all
SELECT '2014-11-30','2xxxxxxxx1', 399.23400 union all
SELECT '2014-11-30','2xxxxxxxx1', 2661.56000 union all
SELECT '2014-11-30','2xxxxxxxx1', 79.84680 union all
SELECT '2014-12-31','2xxxxxxxx1', 533.58000 union all
SELECT '2014-12-31','2xxxxxxxx1', 80.03700 union all
SELECT '2014-12-31','2xxxxxxxx1', 2667.90000 union all
SELECT '2015-01-31','2xxxxxxxx1', 80.24760 union all
SELECT '2015-01-31','2xxxxxxxx1', 534.98400 union all
SELECT '2015-01-31','2xxxxxxxx1', 2674.92000 union all
SELECT '2015-02-28','2xxxxxxxx1', 536.34800 union all
SELECT '2015-02-28','2xxxxxxxx1', 2681.74000 union all
SELECT '2015-02-28','2xxxxxxxx1', 80.45220 union all
SELECT '2015-03-31','2xxxxxxxx1', 2687.91000 union all
SELECT '2015-03-31','2xxxxxxxx1', 537.58200 union all
SELECT '2015-03-31','2xxxxxxxx1', 80.63730 union all
SELECT '2015-04-30','2xxxxxxxx1', 538.95200 union all
SELECT '2015-04-30','2xxxxxxxx1', 80.84280 union all
SELECT '2015-04-30','2xxxxxxxx1', 2694.76000 union all
SELECT '2015-05-05','2xxxxxxxx1', 404.21400 union all
SELECT '2015-05-05','2xxxxxxxx1', 2694.76000 union all
SELECT '2015-05-05','2xxxxxxxx1', 2694.76000 union all
SELECT '2015-05-11','2xxxxxxxx1', 2694.76000 union all
SELECT '2015-05-11','2xxxxxxxx1', 2694.76000 union all
SELECT '2015-05-11','2xxxxxxxx1', 404.21400 union all
SELECT '2015-05-17','2xxxxxxxx1', 2694.76000 union all
SELECT '2015-05-17','2xxxxxxxx1', 404.21400 union all
SELECT '2015-05-17','2xxxxxxxx1', 2694.76000 union all
SELECT '2015-05-18','2xxxxxxxx1', 2694.76000 union all
SELECT '2015-05-18','2xxxxxxxx1', 404.21400 union all
SELECT '2015-05-18','2xxxxxxxx1', 2694.76000 union all
SELECT '2015-05-19','2xxxxxxxx1', 2694.76000 union all
SELECT '2015-05-19','2xxxxxxxx1', 2694.76000 union all
SELECT '2015-05-19','2xxxxxxxx1', 404.21400
select * from @fact_hist order by 1 asc
Я хочу захватить AccountStatus как день или период, когда это произошло, используя Дата транзакции (FullDate). Это позволит мне узнать статус дня транзакции.
См. Ниже мою нужную таблицу, используя приведенный выше пример, чтобы заполнить поле AccountStatus в таблице транзакций.
DECLARE @fact_hist_ext TABLE (FullDate date, FORACID VARCHAR(20), ActualBalance decimal(32,5), accountstatus varchar(1))
INSERT INTO @fact_hist_ext
SELECT '2014-01-31','2xxxxxxxx1', 2595.53000,'A' union all
SELECT '2014-01-31','2xxxxxxxx1', 311.46360,'A' union all
SELECT '2014-01-31','2xxxxxxxx1', 77.86590,'A' union all
SELECT '2014-02-28','2xxxxxxxx1', 77.99790,'A' union all
SELECT '2014-02-28','2xxxxxxxx1', 311.99160,'A' union all
SELECT '2014-02-28','2xxxxxxxx1', 2599.93000,'A' union all
SELECT '2014-03-31','2xxxxxxxx1', 312.47040,'A' union all
SELECT '2014-03-31','2xxxxxxxx1', 2603.92000,'A' union all
SELECT '2014-03-31','2xxxxxxxx1', 78.11760,'A' union all
SELECT '2014-04-30','2xxxxxxxx1', 78.28800,'A' union all
SELECT '2014-04-30','2xxxxxxxx1', 2609.60000,'A' union all
SELECT '2014-04-30','2xxxxxxxx1', 313.15200,'A' union all
SELECT '2014-05-31','2xxxxxxxx1', 2618.10000,'A' union all
SELECT '2014-05-31','2xxxxxxxx1', 78.54300,'A' union all
SELECT '2014-05-31','2xxxxxxxx1', 314.17200,'A' union all
SELECT '2014-06-30','2xxxxxxxx1', 78.78300,'A' union all
SELECT '2014-06-30','2xxxxxxxx1', 2626.10000,'I' union all
SELECT '2014-06-30','2xxxxxxxx1', 315.13200,'I' union all
SELECT '2014-07-31','2xxxxxxxx1', 395.00250,'I' union all
SELECT '2014-07-31','2xxxxxxxx1', 79.00050,'I' union all
SELECT '2014-07-31','2xxxxxxxx1', 2633.35000,'I' union all
SELECT '2014-08-31','2xxxxxxxx1', 79.24590,'I' union all
SELECT '2014-08-31','2xxxxxxxx1', 396.22950,'I' union all
SELECT '2014-08-31','2xxxxxxxx1', 2641.53000,'I' union all
SELECT '2014-09-30','2xxxxxxxx1', 2648.05000,'I' union all
SELECT '2014-09-30','2xxxxxxxx1', 397.20750,'I' union all
SELECT '2014-09-30','2xxxxxxxx1', 79.44150,'I' union all
SELECT '2014-10-31','2xxxxxxxx1', 398.21850,'I' union all
SELECT '2014-10-31','2xxxxxxxx1', 2654.79000,'I' union all
SELECT '2014-10-31','2xxxxxxxx1', 79.64370,'I' union all
SELECT '2014-11-30','2xxxxxxxx1', 399.23400,'I' union all
SELECT '2014-11-30','2xxxxxxxx1', 2661.56000,'I' union all
SELECT '2014-11-30','2xxxxxxxx1', 79.84680,'I' union all
SELECT '2014-12-31','2xxxxxxxx1', 533.58000,'A' union all
SELECT '2014-12-31','2xxxxxxxx1', 80.03700,'A' union all
SELECT '2014-12-31','2xxxxxxxx1', 2667.90000,'A' union all
SELECT '2015-01-31','2xxxxxxxx1', 80.24760,'A' union all
SELECT '2015-01-31','2xxxxxxxx1', 534.98400,'A' union all
SELECT '2015-01-31','2xxxxxxxx1', 2674.92000,'A' union all
SELECT '2015-02-28','2xxxxxxxx1', 536.34800,'A' union all
SELECT '2015-02-28','2xxxxxxxx1', 2681.74000,'A' union all
SELECT '2015-02-28','2xxxxxxxx1', 80.45220,'A' union all
SELECT '2015-03-31','2xxxxxxxx1', 2687.91000,'A' union all
SELECT '2015-03-31','2xxxxxxxx1', 537.58200,'A' union all
SELECT '2015-03-31','2xxxxxxxx1', 80.63730,'A' union all
SELECT '2015-04-30','2xxxxxxxx1', 538.95200,'A' union all
SELECT '2015-04-30','2xxxxxxxx1', 80.84280,'A' union all
SELECT '2015-04-30','2xxxxxxxx1', 2694.76000,'A' union all
SELECT '2015-05-05','2xxxxxxxx1', 404.21400,'A' union all
SELECT '2015-05-05','2xxxxxxxx1', 2694.76000,'A' union all
SELECT '2015-05-05','2xxxxxxxx1', 2694.76000,'A' union all
SELECT '2015-05-11','2xxxxxxxx1', 2694.76000,'A' union all
SELECT '2015-05-11','2xxxxxxxx1', 2694.76000,'A' union all
SELECT '2015-05-11','2xxxxxxxx1', 404.21400,'A' union all
SELECT '2015-05-17','2xxxxxxxx1', 2694.76000,'A' union all
SELECT '2015-05-17','2xxxxxxxx1', 404.21400,'A' union all
SELECT '2015-05-17','2xxxxxxxx1', 2694.76000,'A' union all
SELECT '2015-05-18','2xxxxxxxx1', 2694.76000,'A' union all
SELECT '2015-05-18','2xxxxxxxx1', 404.21400,'A' union all
SELECT '2015-05-18','2xxxxxxxx1', 2694.76000,'A' union all
SELECT '2015-05-19','2xxxxxxxx1', 2694.76000,'A' union all
SELECT '2015-05-19','2xxxxxxxx1', 2694.76000,'A' union all
SELECT '2015-05-19','2xxxxxxxx1', 404.21400,'A'
select * from @fact_hist_ext order by 1 asc
Не могли бы вы обеспечить ожидаемый результат? – mxix
Это третий пример таблицы. – Abacus