Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Агрегация строчных значений  [new]
Васенька Пупкин
Guest
Вообщем так - мне попросили сгруппировать данные из Екселя по определенным столбцам. Т.к. Ексель знаю гораздо хуже чем MS SQL сконвертировал Ексель в табличку:

CREATE TABLE [List1] (
	[СудУч2] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
	[адрес судебного участка] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
	[УН физ# лица] [float] NULL ,
	[Рабочее наименование] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
	[ИНН] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
	[Адрес места жительства] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
	[Дата рождения] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
	[№  документа] [float] NULL ,
	[Дата издания документа] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
	[сумма по документу] [float] NULL ,
) ON [PRIMARY]
GO


И есть запрос

select 
[СудУч2]
,[адрес судебного участка]
,cast([УН физ# лица] as decimal)
,[Рабочее наименование]
,[ИНН]
,[Адрес места жительства]
,[Дата рождения]

,'; ' + cast(cast([№  документа] as decimal) as varchar) + ' от ' + [Дата издания документа]  ---<   УОТ ТУТА ПРОБЛЕМА
,sum(cast([сумма по документу] as decimal(20,2)))


 from list1
group by 
[СудУч2]
,[адрес судебного участка]
,[УН физ# лица]
,[Рабочее наименование]
,[ИНН]
,[Адрес места жительства]
,[Дата рождения]


Который должен выдавать сгруппированную по лицам информацию.
И вот у меня встает вопрос - как аггрегировать строчные значения?
Потому как выдаёт следующую ошибку:

Server: Msg 8120, Level 16, State 1, Line 3
Column 'list1.№ документа' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Server: Msg 8120, Level 16, State 1, Line 3
Column 'list1.Дата издания документа' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
25 ноя 14, 07:57    [16899782]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация строчных значений  [new]
Васенька Пупкин
Guest
MS SQL 2000
25 ноя 14, 08:04    [16899797]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация строчных значений  [new]
Jaffar
Member

Откуда:
Сообщений: 636
Васенька Пупкин,

for xml path('')
25 ноя 14, 08:11    [16899823]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация строчных значений  [new]
Guf
Member

Откуда: Новосибирск
Сообщений: 663
FAQ - Сложение символьных полей в запросе
25 ноя 14, 08:22    [16899849]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация строчных значений  [new]
iap
Member

Откуда: Москва
Сообщений: 47198
Jaffar
Васенька Пупкин,

for xml path('')

Васенька Пупкин
MS SQL 2000
25 ноя 14, 09:33    [16900090]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация строчных значений  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Васенька Пупкин,

а в чем проблема-то?
все что не под агрегатными функциями должно быть под Group By
добавить туда
cast(cast([№ документа] as decimal) as varchar) или cast([№ документа] as decimal)
и
[Дата издания документа]
и всего делов
25 ноя 14, 10:54    [16900444]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация строчных значений  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9161
Васенька Пупкин, Вы неправильно написали условие группировки, о чем и сообщает сервер.
Забыли добавить созданное выражение.
25 ноя 14, 13:56    [16901943]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить