Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Помогите написать запрос / 12 сообщений из 12, страница 1 из 1
12.11.2009, 17:16
    #36307334
_devel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
ASE 15.0.3

есть таблица:

name...Вася...Вася...Вася...Петя...Петя...Коля...

нужно получить :

name... cntВася... 1Вася... 0Вася... 0Петя... 1Петя... 0Коля... 1

Заранее Спасибо!!!
...
Рейтинг: 0 / 0
12.11.2009, 18:32
    #36307549
SQLMantis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
_devel,

нет
...
Рейтинг: 0 / 0
12.11.2009, 18:58
    #36307625
_devel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
Не, не одним селектом. Можно и несколькими или с помощью курсора
...
Рейтинг: 0 / 0
12.11.2009, 19:18
    #36307662
antand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
_devel,

С курсором Вы и сами справитесь. Документация есть.
Но для начала определитесь, чем с точки зрения сервера Вася в первой строке отличается от второй. Чтобы понять у какого Васи ставить 1.
Тогда может и курсор не понадобится:)
...
Рейтинг: 0 / 0
12.11.2009, 19:55
    #36307733
_devel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
antand,

у любого "Васи", главное чтоб "1" стояло только у одного "Васи", а у всех остальных "0"
...
Рейтинг: 0 / 0
12.11.2009, 22:50
    #36307965
antand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
_devel,

Вы видимо не поняли.
Чтобы поставить 1 только у одной записи Вася, нужно именно к этой записи иметь уникальный ключ.
А его у Вас нет, т.к. пока все три записи "Вася" с точки зрения сервера будут равноправны.
...
Рейтинг: 0 / 0
12.11.2009, 23:17
    #36307983
_devel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
antand,

считаем что я вылил таблицу во временную таблицу с идентити полем id и получил:

id name ... cnt 1 Вася ... 1 2 Вася ... 0 3 Вася ... 0 4 Петя ... 1 5 Петя ... 0 6 Коля ... 1
...
Рейтинг: 0 / 0
13.11.2009, 00:30
    #36308051
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
_develantand,

считаем что я вылил таблицу во временную таблицу с идентити полем id и получил:

id name ... cnt 1 Вася ... 1 2 Вася ... 0 3 Вася ... 0 4 Петя ... 1 5 Петя ... 0 6 Коля ... 1Тогда запросто:
Код: plaintext
1.
2.
3.
select a.id, a.name,
       (case when (select min(b.id) from #t b where b.name=a.name)=a.id then  1  else  0  end) cnt
from #t a
order by id
...
Рейтинг: 0 / 0
13.11.2009, 01:56
    #36308111
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
_devel wrote:
> Не, не одним селектом. Можно и несколькими или с помощью курсора

Вот с помощью курсора и делай. На самом деле особенно по-другому
и никак.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.11.2009, 01:57
    #36308112
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
antand wrote:

> Чтобы поставить 1 только у одной записи Вася, нужно именно к этой записи
> иметь уникальный ключ.

.... либо использовать курсор и для первой записи ставить 1
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.11.2009, 08:13
    #36308190
Mikle83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
MasterZiv
.... либо использовать курсор и для первой записи ставить 1


да и только при условии, что таблица сортирована по "Васям"... )
...
Рейтинг: 0 / 0
13.11.2009, 08:56
    #36308240
_devel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
White Owl_develantand,

считаем что я вылил таблицу во временную таблицу с идентити полем id и получил:

id name ... cnt 1 Вася ... 1 2 Вася ... 0 3 Вася ... 0 4 Петя ... 1 5 Петя ... 0 6 Коля ... 1Тогда запросто:
Код: plaintext
1.
2.
3.
select a.id, a.name,
       (case when (select min(b.id) from #t b where b.name=a.name)=a.id then  1  else  0  end) cnt
from #t a
order by id


БОЛЬШОЕ СПАСИБО.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Помогите написать запрос / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]