Имя: Пароль:
1C
 
Прямой запрос, группировка
0 Mary01
 
03.02.18
19:57
Всем добрый вечер!
подскажите пожалуйста, как в SQL-запросе можно делать группировку по текстовому полю?
Есть прямой запрос, который упрощенно можно показать как:

|SELECT top 5
|'t' as тест,
|Номенклатура.ID as [Номенклатура $Справочник.Номенклатура]
|FROM                                      
|$Справочник.Номенклатура Номенклатура (nolock)
|GROUP BY  
|тест,
|Номенклатура.ID"

Выдает ошибку: Недопустимое имя столбца "тест".
1 vicof
 
03.02.18
20:53
Ну а чуть-чуть напрячь извилины и подумать?
2 Mary01
 
03.02.18
21:02
(1) если сделать
...
|GROUP BY  
|'t',
|Номенклатура.ID"

то ошибка - Каждое выражение GROUP BY должно содержать по меньшей мере одну ссылку на столбец.
3 vicof
 
03.02.18
23:10
as test
4 vicof
 
03.02.18
23:10
group by test
5 Mary01
 
03.02.18
23:14
(4) Недопустимое имя столбца "test" )
6 youalex
 
03.02.18
23:18
by 't'
7 Mary01
 
03.02.18
23:19
(6) так делала, написала в (2)
8 youalex
 
03.02.18
23:25
а зачем вообще, |GROUP BY  
|'t',

если это литерал?  Напишите select distinct
9 youalex
 
03.02.18
23:26
Или исключите его из секции GROUP BY. Зачем вы его туда запихали?
10 youalex
 
03.02.18
23:28
Проверил в квери скуля. на "select 5 group by 5" выдало похожее сообщение, что, наверное, логично.
11 Mary01
 
03.02.18
23:47
(9) и правда.. зачем. убрала. вот все и решилось))
12 vicof
 
03.02.18
23:58
А кавычки обязательно, да?
13 Mary01
 
04.02.18
00:04
(12) да, т.к. это не название колонки, а текст, вместо t могло быть любое слово
14 vicof
 
04.02.18
00:21
|SELECT top 5
|'t' as test,
|Номенклатура.ID as [Номенклатура $Справочник.Номенклатура]
|FROM                                      
|$Справочник.Номенклатура Номенклатура (nolock)
|GROUP BY  
|test,
|Номенклатура.ID"

не?
15 youalex
 
04.02.18
00:27
(14) test - это как бы вообще, псевдоним. Он играет сильно после group
16 Fram
 
04.02.18
00:28
(14) не будет такая конструкция работать. в GROUP BY должно содержать по меньшей мере одну ссылку на столбец. что в принципе в (2) уже написано
17 Mary01
 
04.02.18
00:48
(14) так делала, в (5) написала ошибку
18 vicof
 
04.02.18
01:12
ВЫБРАТЬ
5 КАК Тест,
&Номенклатура
СГРУППИРОВАТЬ ПО
5,
&Номенклатура

Ну вот так у меня работает
19 runoff_runoff
 
04.02.18
01:19
за группировку по константе и группировку по праймери-ключу не предлагали ещё расстреливать на месте? ;-)
20 vicof
 
04.02.18
02:19
(19) Это тест был, не переживай)
21 youalex
 
04.02.18
02:35
(19) Это не константа, а литерал. И за группировку по ключу *при наличиии отсутствия джойнов и прочего  - расстреливать точно не стоит. Максимум - немного пожурить.