SQL Server 2000, please, Help!
-
- Уже с Приветом
- Posts: 673
- Joined: 08 Jun 2001 09:01
- Location: USA
SQL Server 2000, please, Help!
У меня 4 разные квери, результаты которых нужно собрать в один csv file. Все вроде бы работает, но между результатами этих кверей в файле имеется пустая строчка. Как избавиться от нее?
Кроме того, нужно в результатах пронумеровать ряды. Я не знаю как это сделать. Причем нумерация должна продолжаться от одной квери к другой. Есть ли какие-нибудь не очень сложные решения для этого?
Я -- не программист, в интерфейсах опыта почти никакого. Что-нибудь простое.
Я сейчас открываю этот csv file в Экселе, удаляю пустые строчки между результатами, затем нумерую ряды. ( все с помощью макро). Как это все сделать в SQL Servere сразу же?
Кроме того, нужно в результатах пронумеровать ряды. Я не знаю как это сделать. Причем нумерация должна продолжаться от одной квери к другой. Есть ли какие-нибудь не очень сложные решения для этого?
Я -- не программист, в интерфейсах опыта почти никакого. Что-нибудь простое.
Я сейчас открываю этот csv file в Экселе, удаляю пустые строчки между результатами, затем нумерую ряды. ( все с помощью макро). Как это все сделать в SQL Servere сразу же?
-
- Уже с Приветом
- Posts: 5669
- Joined: 13 Oct 2000 09:01
- Location: East Bay, CA
-
- Уже с Приветом
- Posts: 673
- Joined: 08 Jun 2001 09:01
- Location: USA
Re: SQL Server 2000, please, Help!
Будет ли работать UNION ALL в моем случае? У меня в каждой квери разные филды, мне эти самые филды тоже нужно в аутпут заносить.
Я, наверное, не смогла как следует задачу описать.
Выглядит примерно так(то что я хочу):
номер_рекорда инструмент купон матюрити
1 Бонд 5.0 20330122
2 Бонд 4.35 20200122
номер_рекорда инструмент делта гамма цена
3 Опшен .38 .18 1.07
4 Опшен .42 .25 .280
А у меня сейчас так (пробел между двумя результатами и не знаю как нумеровать строчки):
номер_рекорда инструмент купон матюрити
Бонд 5.0 20330122
Бонд 4.35 20200122
номер_рекорда инструмент делта гамма цена
Опшен .38 .18 1.07
Опшен .42 .25 .280
-
- Уже с Приветом
- Posts: 5669
- Joined: 13 Oct 2000 09:01
- Location: East Bay, CA
Re: SQL Server 2000, please, Help!
Veronica wrote:Будет ли работать UNION ALL в моем случае? У меня в каждой квери разные филды, мне эти самые филды тоже нужно в аутпут заносить.
Тогда вам нужен JOIN
Какой именно трудно сказать не зная всех queries и условий задачи.
Сабина
-
- Уже с Приветом
- Posts: 673
- Joined: 08 Jun 2001 09:01
- Location: USA
Re: SQL Server 2000, please, Help!
Sabina wrote:Veronica wrote:Будет ли работать UNION ALL в моем случае? У меня в каждой квери разные филды, мне эти самые филды тоже нужно в аутпут заносить.
Тогда вам нужен JOIN
Какой именно трудно сказать не зная всех queries и условий задачи.
Сабина
Джойн не даст мне филдов для каждой квери.
Или это какой-то другой джойн?
-
- Уже с Приветом
- Posts: 5669
- Joined: 13 Oct 2000 09:01
- Location: East Bay, CA
Re: SQL Server 2000, please, Help!
Veronica wrote:Джойн не даст мне филдов для каждой квери.
Если и outer join (извините я не заметила, что он на этом сайте в отдельную главу вынесен http://www.1keydata.com/sql/sqlouterjoin.html)
не решает вашей задачи, то значит надо попробовать что-то решать на уровне экспорта из SQL Server в Эксель.
Сабина
-
- Уже с Приветом
- Posts: 1935
- Joined: 15 Sep 2003 17:49
- Location: Ukraine, Mariupol -> USA everywhere :-)
Я наверное не совсем понимаю вопрос.
Поля можно сгенерировать, а потом сделать union.
select instrument, kupon, maturity, 0 gamma, 0 delta, 0 price from bla bla bla
union all
select instrument, 0 kupon, 0 maturity, gamma, delta, price select from bla bla bla
С трудом представляю зачем это может понадобиться. Зачем объединять два набора? Что-то у вас с постановкой плохо...
С нумерацией будет сложно... Даже и не скажу как это сделать с наскоку...
Готовой функции нет... Но должно быть решение... Курсор например...
Поля можно сгенерировать, а потом сделать union.
select instrument, kupon, maturity, 0 gamma, 0 delta, 0 price from bla bla bla
union all
select instrument, 0 kupon, 0 maturity, gamma, delta, price select from bla bla bla
С трудом представляю зачем это может понадобиться. Зачем объединять два набора? Что-то у вас с постановкой плохо...
С нумерацией будет сложно... Даже и не скажу как это сделать с наскоку...
Готовой функции нет... Но должно быть решение... Курсор например...
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
-
- Уже с Приветом
- Posts: 1935
- Joined: 15 Sep 2003 17:49
- Location: Ukraine, Mariupol -> USA everywhere :-)
-
- Уже с Приветом
- Posts: 673
- Joined: 08 Jun 2001 09:01
- Location: USA
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
О как все запушено
Почему у Вас строчка с Header повторяется много раз ?
Почему она дожна повторяться ?
Как правило экспорт SQL -> XLS иммет вид
<строка заголовка>
<строка данных>
...
<строка данных>
Прчием строки данных имеют одинаковый тип данных то етсь однородны
У вас я вижу нечто вроде
<строка заголовка1>
<строка данных>
...
<строка данных>
<строка заголовка2>
<строка данных>
...
<строка данных>
Что это ? У вас stored procedure выдает сразу много result sets ? или это не строки заголовков а таике данные ? Какой тип тогда имеет колонка B ?
Приведите PLS структуру таблицы и или кверь или процедуру которая выкачивает данные
Почему у Вас строчка с Header повторяется много раз ?
Почему она дожна повторяться ?
Как правило экспорт SQL -> XLS иммет вид
<строка заголовка>
<строка данных>
...
<строка данных>
Прчием строки данных имеют одинаковый тип данных то етсь однородны
У вас я вижу нечто вроде
<строка заголовка1>
<строка данных>
...
<строка данных>
<строка заголовка2>
<строка данных>
...
<строка данных>
Что это ? У вас stored procedure выдает сразу много result sets ? или это не строки заголовков а таике данные ? Какой тип тогда имеет колонка B ?
Приведите PLS структуру таблицы и или кверь или процедуру которая выкачивает данные
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
ПРочитал еще раз первое сообщение
Итак у Вас четыре квери. Сделайте одну с помощью UNION ALL как сказала Сабина потому что тип колонок вроде у Вас ординаков. ПРонумеруйте строки с помощью Identity
Но вот про что Вы должны сразу забыть - это про то что у Вас заголовки будут в середине данных
Заголовок с названиями колонок будет только один
Итак у Вас четыре квери. Сделайте одну с помощью UNION ALL как сказала Сабина потому что тип колонок вроде у Вас ординаков. ПРонумеруйте строки с помощью Identity
Но вот про что Вы должны сразу забыть - это про то что у Вас заголовки будут в середине данных
Заголовок с названиями колонок будет только один
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 673
- Joined: 08 Jun 2001 09:01
- Location: USA
Dmitry67 wrote:ПРочитал еще раз первое сообщение
Итак у Вас четыре квери. Сделайте одну с помощью UNION ALL как сказала Сабина потому что тип колонок вроде у Вас ординаков. ПРонумеруйте строки с помощью Identity
Но вот про что Вы должны сразу забыть - это про то что у Вас заголовки будут в середине данных
Заголовок с названиями колонок будет только один
В этом то и проблема, что требуется произвести флат файл с повторяющимися филдами.
Филды разные для каждой группы инструментов,
они одинаковы только вначале, первые 5 или 6.
Я поэтому и делаю 4 квери для 4 групп инструментов,
затем мне все эти результаты нужно собрать в один файл,
пронумеровать секвеншуалли все ряды, избавиться от пробелов между результатами кверей и послать этот файл в другую систему.
Это требование этой другой системы - такой файл с филдами для каждой группы, номерами рядов и никаких пробелов.
Сейчас думаю, что может быть пробелы не проблема, но как тогда нумеровать ряды, чтобы нумерация не прерывалась от одной группы к другой?
Прошу прощения за запутанность.
У меня решение есть в Экселе но мне бы хотелось сразу же готовый результат с SQL Server, если это возможно.
Спасибо большое за ваше время
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Если у Вас четыре квери с разными полуми то сделайте вот что
1. Каждую записывает во временную таблицу с N identity, #T1,#T2,#T3,#T4
2. Результат из #T1 читаем напрямую
3. Из T2:
declare @t2base int
select @t2base=max(N) from #T1
if @t2base is null set @t2base=0
select N+@TéBase,...... from #T2
4 итд
Нумерацию сделали
А вот пробелы придется убрать макросом
1. Каждую записывает во временную таблицу с N identity, #T1,#T2,#T3,#T4
2. Результат из #T1 читаем напрямую
3. Из T2:
declare @t2base int
select @t2base=max(N) from #T1
if @t2base is null set @t2base=0
select N+@TéBase,...... from #T2
4 итд
Нумерацию сделали
А вот пробелы придется убрать макросом
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 673
- Joined: 08 Jun 2001 09:01
- Location: USA
Dmitry67 wrote:Если у Вас четыре квери с разными полуми то сделайте вот что
1. Каждую записывает во временную таблицу с N identity, #T1,#T2,#T3,#T4
2. Результат из #T1 читаем напрямую
3. Из T2:
declare @t2base int
select @t2base=max(N) from #T1
if @t2base is null set @t2base=0
select N+@TéBase,...... from #T2
4 итд
Нумерацию сделали
А вот пробелы придется убрать макросом
Спасибо
я попробую
кажется такое элегантное решение
я бы сама ни за что не догадалась
Спасибо еще раз
-
- Уже с Приветом
- Posts: 1935
- Joined: 15 Sep 2003 17:49
- Location: Ukraine, Mariupol -> USA everywhere :-)
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
-
- Уже с Приветом
- Posts: 12014
- Joined: 05 Apr 2000 09:01
- Location: Philadelphia, PA, USA
-
- Уже с Приветом
- Posts: 550
- Joined: 31 Mar 2000 10:01
- Location: Moscow --> Baltimore, MD
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Niky wrote:Dmitry67 wrote:NNemo wrote:Да и заголовки можно в средину вставить просто как отдельный select с константами в UNION.
Да но точда надо будет все типы сделать совместимыми
Или использовать sql_variant
Можно просто в select'е слепить comma-separated строчки.
Если Excel тянет данные через Get External Data, то он тогда запихнет все в колонку A (строковую)
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 550
- Joined: 31 Mar 2000 10:01
- Location: Moscow --> Baltimore, MD
Dmitry67 wrote:Niky wrote:Dmitry67 wrote:NNemo wrote:Да и заголовки можно в средину вставить просто как отдельный select с константами в UNION.
Да но точда надо будет все типы сделать совместимыми
Или использовать sql_variant
Можно просто в select'е слепить comma-separated строчки.
Если Excel тянет данные через Get External Data, то он тогда запихнет все в колонку A (строковую)
Как я понял из самого первого поста - цель автора - получить csv файл.