2014-02-10 5 views
-2

У меня есть таблица с данными, как показано ниже:Заполните данные таблицы, где день не хватает

branch day amount discount gst 
001  4  300.00 130.00  9.32 
001  10 200.12 211.00  18.00 
001  30 343.22 122.00  8.22 
002  12 423.00 123.00  8.00 
005  2  453.21 232.11  9.99 
005  12 111.21 99.00  0.21 
005  27 321.99 12.00  0.00 

Я хочу, чтобы заполнить недостающий день вставить значение в таблицу с помощью vb.net, чтобы быть, как это

branch day amount discount gst 
001  1  0.00  0.00  0.00 
001  2  0.00  0.00  0.00 
001  3  0.00  0.00  0.00 
001  4  300.00 130.00  9.32 
001  5  0.00  0.00  0.00 
001  6  0.00  0.00  0.00 
001  7  0.00  0.00  0.00 
001  8  0.00  0.00  0.00 
001  9  0.00  0.00  0.00 
001  10 200.12 211.00  18.00 
....... 

Итоговые дней получить от dayinmonth

UPDATE:

Im рассматривать сделать как Тхи s:

* выберите таблицу первый заказ в день

jj = 1 
while jj <> DaysInMonth(mth, yr) 
if jj <> rowTable.item("day") 
* insert the value here. 
jj = jj + 1 
end if 
+1

Может быть, вы можете показать нам, что вы пробовали? В основном вам необходимо (a) выполнить поиск отсутствующих дней, а затем (b) вставить пустые (?) Недостающие строки. Это почти тривиально делать на любом языке программирования - попробовать, а затем обратиться за помощью? – robnick

+0

@svranken, пожалуйста, обратитесь к моему вопросу.i уже обновите его. – user2412351

+0

@robnick пожалуйста, обратитесь к моему вопросу.i уже обновите его. – user2412351

ответ

0

Попробуйте этот запрос

declare @tab table(branch varchar(3), day int, amount float) ; 
insert into @tab values 
('001',4,300.00), 
('001',10,200.12), 
('001',30,343.22), 
('002',12,423.00), 
('005',2,453.21), 
('005',12,111.21), 
('005',27,321.99); 

with month_days as 
(select t.number,t1.branch from (select number from master..spt_values where type='P' and number between 1 and 30) t cross join (select distinct branch from @tab)t1) 
select md.branch,number as day,isnull(amount,0) amount from @tab t right join month_days md on t.day=md.number and t.branch=md.branch; 
0

Вы можете получить отсутствующие дни со следующим запросом,

DECLARE @MIN INT 
DECLARE @MAX INT 
SELECT @MIN = MIN(dayField) + 1, @MAX = MAX(dayField) - 1 FROM YourTable 
CREATE TABLE #TMP (FIELD_NO INT) 
WHILE @MIN <= @MAX 
BEGIN 
    IF NOT EXISTS (SELECT * FROM YourTable WHERE dayField = @MIN) 
     INSERT INTO #TMP (FIELD_NO) VALUES (@MIN) 
    SET @MIN = @MIN + 1 
END 

SELECT * FROM #TMP 
DROP TABLE #TMP 

Теперь вы можете создать ВСТАВИТЬ заявление от результирующего.

Смежные вопросы