Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Результат SELECT-а в одну строку  [new]
Hamster_Rulik
Member

Откуда: Киев
Сообщений: 27
Помогите решить задачу.
Есть таблица task с полями :
employee_id(код сотрудника),
create_date(начало выполнения),
complete_date(конец выполнения),
name(название задачи)

Нужно в результате получить следующие данные
Код сотрудника,Дата(каждый день из периода create_date и complete_date), Название задач через запятую, которые присуствуют в данном периоде

Сервер базы - 2000, пользователь с правами просмотра (sa)
10 авг 11, 13:04    [11097128]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
https://www.sql.ru/faq/faq_topic.aspx?fid=130
10 авг 11, 13:05    [11097140]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Hamster_Rulik
Member

Откуда: Киев
Сообщений: 27
автор
Member
Откуда: Novosibirsk
Сообщений: 22847 https://www.sql.ru/faq/faq_topic.aspx?fid=130

Спасибо за ссылку, но мне не желательно создавать функцию, я бы хотел получить результат с помощью запроса..
10 авг 11, 13:17    [11097265]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Hamster_Rulik
автор
Member
Откуда: Novosibirsk
Сообщений: 22847 https://www.sql.ru/faq/faq_topic.aspx?fid=130

Спасибо за ссылку, но мне не желательно создавать функцию, я бы хотел получить результат с помощью запроса..
Там много вариантов. Дочитайте уже до конца. Вместе с комментариями.
10 авг 11, 13:19    [11097285]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Гавриленко Сергей Алексеевич
Hamster_Rulik
пропущено...

Спасибо за ссылку, но мне не желательно создавать функцию, я бы хотел получить результат с помощью запроса..
Там много вариантов. Дочитайте уже до конца. Вместе с комментариями.
А для 2000-го вариантов, кажись, и нет.
10 авг 11, 13:28    [11097398]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
iap
А для 2000-го вариантов, кажись, и нет.
Через времянку, к примеру.
10 авг 11, 13:29    [11097429]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
aggrstring
Guest
iap
Гавриленко Сергей Алексеевич
пропущено...
Там много вариантов. Дочитайте уже до конца. Вместе с комментариями.
А для 2000-го вариантов, кажись, и нет.


11097086 см. апдейт
10 авг 11, 13:37    [11097496]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Hamster_Rulik
Member

Откуда: Киев
Сообщений: 27
автор
Там много вариантов. Дочитайте уже до конца. Вместе с комментариями.

В основном все варианты с водятся к xml...Я пробывал создать запрос, но сам xml у меня не определяется....
10 авг 11, 13:51    [11097636]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Hamster_Rulik
Member

Откуда: Киев
Сообщений: 27
select employee_id ,( select name + ' ;' as 'data()' from task t2 where t1.employee_id=t2.employee_id for xml path('') )
from task t1
group by employee_id
При объединении по коду сотрудника, выдает следующую ошибку
SQL Server Database Error: Line 1: Incorrect syntax near 'xml'.
10 авг 11, 13:56    [11097687]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Hamster_Rulik
При объединении по коду сотрудника, выдает следующую ошибку
SQL Server Database Error: Line 1: Incorrect syntax near 'xml'.
Наверное, потому что это "Для SQL2005", не?
10 авг 11, 13:59    [11097711]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
Hamster_Rulik
автор
Там много вариантов. Дочитайте уже до конца. Вместе с комментариями.

В основном все варианты с водятся к xml...Я пробывал создать запрос, но сам xml у меня не определяется....


курсорчики! раз по-другому не получается.


получите выборку (врем.табл.) в которой содержатся сагрегированные строки (по сотруднику же вам нужно агрегировать?)
агрегация строк - это последовательное прибавление каждой строки к "сумме предыдущих".
s1 = первая строка
s2 = s1+ вторая строка
s3 = s2 + третья строка

собрать так строки в одну sN одним запросом можно через переменную.

select @s = isnull(@s, '') + s

здесь порядок будет в соотв с order by
10 авг 11, 14:02    [11097746]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
aggrstring
iap
пропущено...
А для 2000-го вариантов, кажись, и нет.


11097086 см. апдейт
UPDATE происходит в произвольном порядке. В топку его!
10 авг 11, 14:41    [11098130]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Как по мне - для 2000 создать функцию и не морочить голову.
10 авг 11, 14:42    [11098152]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
kDnZP
Как по мне - для 2000 создать функцию и не морочить голову.
А я думаю, перейти на SQL2008 и ничего не создавать!
10 авг 11, 14:44    [11098163]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
iap
aggrstring
пропущено...


11097086 см. апдейт
UPDATE происходит в произвольном порядке. В топку его!


пример беспорядочности в студию (с maxdop 1)
10 авг 11, 14:46    [11098180]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
numbers
iap
пропущено...
UPDATE происходит в произвольном порядке. В топку его!


пример беспорядочности в студию (с maxdop 1)
Доказательства порядочности хотелось бы сначала посмотреть
Ссылку - в студию!
10 авг 11, 15:13    [11098408]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
iap
numbers
пропущено...


пример беспорядочности в студию (с maxdop 1)
Доказательства порядочности хотелось бы сначала посмотреть
Ссылку - в студию!


вы придумали что работающий пример не работает и хотите доказательств обратного? запустите уже что ли.
10 авг 11, 15:15    [11098438]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
numbers,

дело в том, что за возможность упорядочивать UPDATE идёт давняя борьба пользователей с Microsoft
Иначе этот порядок негарантирован.
И пусть сто тыщ раз отработает правильно, а на сто тыщ первый глюкнет - это означает, что не упорядочивае,
и я, например, закладываться на это никогда не буду
10 авг 11, 15:15    [11098440]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
iap
numbers,

дело в том, что за возможность упорядочивать UPDATE идёт давняя борьба пользователей с Microsoft
Иначе этот порядок негарантирован.
И пусть сто тыщ раз отработает правильно, а на сто тыщ первый глюкнет - это означает, что не упорядочивае,
и я, например, закладываться на это никогда не буду


ок, не закладывайтесь. лапшу на уши что оно не работает тоже пожалуйста не вешайте.
10 авг 11, 15:18    [11098464]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
numbers
iap
numbers,

дело в том, что за возможность упорядочивать UPDATE идёт давняя борьба пользователей с Microsoft
Иначе этот порядок негарантирован.
И пусть сто тыщ раз отработает правильно, а на сто тыщ первый глюкнет - это означает, что не упорядочивае,
и я, например, закладываться на это никогда не буду


ок, не закладывайтесь. лапшу на уши что оно не работает тоже пожалуйста не вешайте.
Ещё повторить?
Оно не работает!
Это говнокод.
10 авг 11, 15:22    [11098488]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
iap
numbers
пропущено...


ок, не закладывайтесь. лапшу на уши что оно не работает тоже пожалуйста не вешайте.
Ещё повторить?
Оно не работает!
Это говнокод.


вы не в состоянии привести пример когда оно не работает и продолжаете что-то доказывать?
10 авг 11, 15:24    [11098509]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
numbers
ок, не закладывайтесь. лапшу на уши что оно не работает тоже пожалуйста не вешайте.

declare @number varchar(100) 
set @number = '0000010002003400'

create table #numbers
(
  num varchar(100),
  pos int,
  startpos int,
  primary key clustered (pos)
)
create index idx1 on #numbers(num)

;with nm (n, pos)
as
(
  select substring(@number, 1, 1), 1
  union all
  select substring(@number, pos+1, 1), pos+1
  from nm
  where pos < len(@number)
)
insert #numbers
select n1.*, n2.pos
from nm n1
cross apply
(
  select pos = min(pos)
  from nm n2
  where n2.n <> '0'
) n2

delete #numbers
where pos < startpos

declare @num varchar(100)

update nm set
  @num = num = ISNULL(@num, '') + nm.num
from #numbers nm with(index=2)

select num 
from #numbers nm1 
where not exists(select * from #numbers nm2 where nm2.pos > nm1.pos)

drop table #numbers
10 авг 11, 15:27    [11098550]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
Glory,

да, если изменить порядок, то порядок будет изменен.
как я уже указывал на maxdop - можно и без индексов всё сломать.
10 авг 11, 15:30    [11098581]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
numbers
Glory,

да, если изменить порядок, то порядок будет изменен.
как я уже указывал на maxdop - можно и без индексов всё сломать.

И что будет, если оптимизатор сам выберет такой индекс ?
Что будет, если в таблице не будет нужного индекса ?
10 авг 11, 15:32    [11098604]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
numbers
Glory,

да, если изменить порядок, то порядок будет изменен.
как я уже указывал на maxdop - можно и без индексов всё сломать.


то есть при использовании такой конструкции с update надо стопроцентно знать, какой индекс будет использован и какой maxdop, т.к. это повлияет не только на скорость исполнения, но и на сам результат. красота! )
10 авг 11, 15:36    [11098629]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить