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

Откуда: Белокаменная
Сообщений: 260
есть данные
create table #t1(id int, Name1 nvarchar(100),Name2 nvarchar(100),Name3 nvarchar(100) )

insert #t1(id, Name1,Name2,Name3)
values(1,'','',''),(1,'a','',''),(1,'a','b',''),(1,'a','b','c'),
(1,'','',''),(1,'a1','',''),(1,'a1','b',''),(1,'a1','b','c'),
(1,'','',''),(1,'a','',''),(1,'a','b1',''),(1,'a','b1','c'),
(1,'','',''),(1,'a','',''),(1,'a','b',''),(1,'a','b','c1')
select * from #t1

drop table  #t1


id Name1 Name2 Name3
1
1 a
1 a b
1 a b c
1
1 a1
1 a1 b
1 a1 b c
1
1 a
1 a b1
1 a b1 c
1
1 a
1 a b
1 a b c1

никак не могу придумать как получить

id Name1 Name2 Name3
1 a b c
1 a1 b c
1 a b1 c
1 a b c1
17 авг 17, 14:40    [20731390]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20535
SELECT *
FROM #t1
WHERE Name3 IS NOT NULL
17 авг 17, 14:44    [20731406]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
fduch f.f.
Member

Откуда: Белокаменная
Сообщений: 260
прошу прощения

пустых значений может быть больше

create table #t1(id int, Name1 nvarchar(100),Name2 nvarchar(100),Name3 nvarchar(100) )

insert #t1(id, Name1,Name2,Name3)
values
(1,'','',''),(1,'a','b',''),(1,'a','',''),(1,'','','c1')
select * from #t1

drop table  #t1
17 авг 17, 14:44    [20731408]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20535
ну или
WHERE Name3 <> ''
17 авг 17, 14:44    [20731411]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
iap
Member

Откуда: Москва
Сообщений: 46978
Akina
SELECT *
FROM #t1
WHERE Name3 IS NOT NULL
У него там не NULL, а пустые строки
17 авг 17, 14:45    [20731414]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
fduch f.f.
Member

Откуда: Белокаменная
Сообщений: 260
id Name1 Name2 Name3
1
1 a b
1 a
1 c1


нужно

id Name1 Name2 Name3
1 a b c1
17 авг 17, 14:46    [20731418]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20535
fduch f.f.
пустых значений может быть больше

Сформулируйте суть этой упаковки словами.
17 авг 17, 14:46    [20731419]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6037
fduch f.f.,

Опишите подробнее, какую задачу решаете.

Формально, решением будет
select * from #t1 where name1 != '' and name2!= '' and name3 != ''

Но вряд ли это то, что Вам надо.
17 авг 17, 14:46    [20731422]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
fduch f.f.
Member

Откуда: Белокаменная
Сообщений: 260
fduch f.f.
id Name1 Name2 Name3
1 "" "" ""
1 a b ""
1 a "" ""
1 "" "" c1


нужно

id Name1 Name2 Name3
1 a b c1
17 авг 17, 14:47    [20731425]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
komrad
Member

Откуда:
Сообщений: 5244
fduch f.f.

никак не могу придумать как получить

id Name1 Name2 Name3
1 a b c
1 a1 b c
1 a b1 c
1 a b c1


select * from #t1 where Name3 <>N''
17 авг 17, 14:47    [20731426]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20535
id Name1 Name2 Name3
111
112
13

Результат?
17 авг 17, 14:48    [20731431]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6037
fduch f.f.,

Что ж из Вас клещами-то вытягивать приходится.
Все полные комбинации нужны или что-то другое?
17 авг 17, 14:49    [20731434]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
fduch f.f.
Member

Откуда: Белокаменная
Сообщений: 260
Akina
id Name1 Name2 Name3
111
112
13

Результат?


это должно остаться как было
групировка только если пустая строка
а тут все строки уникальны
17 авг 17, 14:50    [20731437]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
982183
Member

Откуда: VL
Сообщений: 3352
fduch f.f.
id Name1 Name2 Name3
1
1 a b
1 a
1 c1
нужно

id Name1 Name2 Name3
1 a b c1


А есть количество уникальных значений больше трех?

1 a 0 0
1 b 0 0
1 c 0 0
1 d 0 0
17 авг 17, 14:51    [20731438]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
fduch f.f.
это должно остаться как было
групировка только если пустая строка
а тут все строки уникальны

синий потому что мягкий
17 авг 17, 14:51    [20731443]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
komrad
Member

Откуда:
Сообщений: 5244
fduch f.f.
прошу прощения

пустых значений может быть больше

create table #t1(id int, Name1 nvarchar(100),Name2 nvarchar(100),Name3 nvarchar(100) )

insert #t1(id, Name1,Name2,Name3)
values
(1,'','',''),(1,'a','b',''),(1,'a','',''),(1,'','','c1')
select * from #t1

drop table  #t1


select * from #t1 
where 
(
case when Name1='' then NULL else Name1 end +
case when Name2='' then NULL else Name2 end +
case when Name3='' then Null else Name3 end
) is not NULL
17 авг 17, 14:52    [20731445]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
fduch f.f.
Member

Откуда: Белокаменная
Сообщений: 260
982183
fduch f.f.
id Name1 Name2 Name3
1
1 a b
1 a
1 c1
нужно

id Name1 Name2 Name3
1 a b c1


А есть количество уникальных значений больше трех?

1 a 0 0
1 b 0 0
1 c 0 0
1 d 0 0


тут то же в одном столбце все значения уникальны

мне нужно выбрать все уникальные комбинации впределах группы , группу задает первый столбец
17 авг 17, 14:54    [20731455]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6037
TaPaK,

- Раз в квадратной коробке, значит круглое.
- Раз круглое, значит оранжевое.
- Раз круглое и оранжевое, значит апельсин.

-Косой! Верни братьям корову!


Топикстартер,

Опишите задачу словами.
17 авг 17, 14:54    [20731457]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
982183
Member

Откуда: VL
Сообщений: 3352
982183
fduch f.f.
id Name1 Name2 Name3
1
1 a b
1 a
1 c1
нужно

id Name1 Name2 Name3
1 a b c1


А есть количество уникальных значений больше трех?

1 a 0 0
1 b 0 0
1 c 0 0
1 d 0 0


Вижу такую схему -
Сначала сгруппировать отдельно по каждому NameN,
Объединить всё это в одну таблицу id Name(Общий)
Потом сгруппировать получившуюся табличку
А потом только остается PIVOT
17 авг 17, 14:56    [20731465]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
982183
Member

Откуда: VL
Сообщений: 3352
fduch f.f.
1 a 0 0
1 b 0 0
1 c 0 0
1 d 0 0

тут то же в одном столбце все значения уникальны
мне нужно выбрать все уникальные комбинации впределах группы , группу задает первый столбец[/quot]
Я вижу результат как:
1 a b с d 0
17 авг 17, 14:57    [20731468]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6037
fduch f.f.
мне нужно выбрать все уникальные комбинации в пределах группы , группу задает первый столбец


id	Name1	Name2	Name3
1
1 a b
1 a
1 c1

id	Name1	Name2	Name3
1 a b c1

Что-то тут не сходится.
17 авг 17, 14:57    [20731469]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
fduch f.f.,


автор
мне нужно выбрать все уникальные комбинации впределах группы , группу задает первый столбец

DISTINCT

2 komrad
автор
select * from #t1
where
(
case when Name1='' then NULL else Name1 end +
case when Name2='' then NULL else Name2 end +
case when Name3='' then Null else Name3 end
) is not NULL

оггоооо это выше моего понимания, может умножать надо?
17 авг 17, 14:57    [20731470]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6037
Не доцитировал Akina с его примером.

Почему в его примере должно остаться как и было?
17 авг 17, 14:58    [20731474]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
komrad
Member

Откуда:
Сообщений: 5244
TaPaK
2 komrad
автор
select * from #t1
where
(
case when Name1='' then NULL else Name1 end +
case when Name2='' then NULL else Name2 end +
case when Name3='' then Null else Name3 end
) is not NULL

оггоооо это выше моего понимания, может умножать надо?

делить! делить по-братски

а если серьезно, то постановка задачи меняется раз в несколько минут - только нарисуешь и закинешь селект, так сразу выясняются новые подробности ;)

посижу пока, посмотрю чем дело кончится и что в конце концов автору было нужно )
17 авг 17, 15:01    [20731483]     Ответить | Цитировать Сообщить модератору
 Re: как сгруппировать?  [new]
fduch f.f.
Member

Откуда: Белокаменная
Сообщений: 260
я ошибся

Akina
id Name1 Name2 Name3
111
112
13

Результат?


должно быть

id Name1 Name2 Name3
1113
1123
17 авг 17, 15:02    [20731486]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить