Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
lexa
-1 / 0 / 0
Регистрация: 22.03.2012
Сообщений: 8
1

Добавление записей в таблицу циклом?

15.07.2014, 19:06. Просмотров 1766. Ответов 1
Метки нет (Все метки)

Доброе время суток, товарищи. Только начал разбираться с Transact-SQL и тут застрял, как казалось, на элементарном запросе. Вообщем так: есть две таблицы. Первая - образцы отчетов tSample (char Name, int SampleID). Вторая - список всех когда-либо использованных отчетов tSampleArchive (int SampleID, datetime InDateTime). Нужно составить статистику по количеству запусков каждого запроса по годам. Вот тут и начинается проблема. Написал вот что:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
--create table t3 (Name char, DStart datetime, Num int)
declare @x1 datetime
declare @x2 datetime  
set @x1 = '2012-01-01'
while @x1 < getdate()
    begin
        set @x2 = dateadd (y, 1, @x1)
        select count (*) as cnt 
        from   tSample inner join tSampleArchive on tSample.SampleID = tSampleArchive.SampleID
        where tSampleArchive.InDateTime between @x1 and @x2
        set @x1 = @x2
    end
Почитал документацию и примеры в сети, но так и не понял как надо добавлять в таблицу в данном случае. То, что я написал, конечно, ничего в таблицу не заносит, но я от этого цикла отталкивался.
В итоге хотел получить что-то вроде этого:
имя |2012-01-01 |2013-01-01|2014-01-01
Отчет №1 |11 |12 |13
Отчет №2 |14 |15 | 16
...
Хотелось бы все-таки разобраться с этим, а то уже неделю мусолю этот цикл
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2014, 19:06
Ответы с готовыми решениями:

Добавление записей в таблицу с условием
Есть рабочая таблица А. Есть временная таблица с данными - Б. Нужно вставить...

Добавление записей в таблицу из другой таблицы по совпадающим столбцам
Доброго времени суток. Подскажите, пожалуйста, решение данной задачи: ...

Добавление записей на сервер
Добрый день, есть MS SQL Server. На нём стоит база arhiv. В ней есть таблица...

Одновременное добавление 2-х записей.
Можно ли мне Одновременно добавлять 2 записи в связанные таблицы ? У меня есть...

Добавление записей в поле внешнего ключа
есть таблица сделка CREATE TABLE sdelka_1 ( id_klient INT(10) NOT NULL, kol...

1
cygapb-007
1306 / 938 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
16.07.2014, 17:19 2
Лучший ответ Сообщение было отмечено lexa как решение

Решение

Прежде всего - SQL оперирует множествами, а не элементами. Пока привыкнешь к этому, мозги поломаются, зато потом влегкую
Ну, и почитать мануалы, конечно же:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
;with tSample as (select * from( values
    (1,'report 1'),(2,'report 2')
    )values_tSample(SampleID,Name))
,tSampleArchive as (select * from( values
    (1,'20140101'),(1,'20130504'),(2,'20131015'),(1,'20140517')
    )values_tSampleArchive(SampleID,InDateTime))
select * 
from (
  select min(s.Name)Name, y.year, count(*) qty
  from tSampleArchive a
  join tSample s on s.SampleID=a.SampleID
  cross apply(select year(a.InDateTime))y(year)
  where y.year between 2012 and 2014
  group by a.SampleID, y.year
  )s
pivot(max(qty) for year in ([2012],[2013],[2014]))p
Name201220132014
report 1NULL12
report 2NULL1NULL
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2014, 17:19

Импорт записей DNS сервера в таблицу SQL
Господа, посоветуйте, как можно импортировать записи DNS сервера в таблицу MS...

Триггер для ограничения ввода записей в таблицу
Здравствуйте! Делаю базу данных больница, в ней есть таблица Лечение...

Автоматическое добавление в таблицу
Доброе утро! Пожалуйста, подскажите, как сделать запрос(или триггер), что бы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru