Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Изменение наименований столбцов по условию  [new]
Gizmor
Member

Откуда:
Сообщений: 54
Доброго времени суток,
есть такая необходимость делать наименование столбца по условию,
допустим если значения в столбце таблицы равны "А", то назвать столбец "А",
если есть значения "А" и "Б", то - "АБ",
если все значения "Б", то"Б".
Реально вообще это или нет в SQL?
17 май 12, 10:51    [12567887]     Ответить | Цитировать Сообщить модератору
 Re: Изменение наименований столбцов по условию  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Gizmor, динамика.
* Но задача мягко говоря странная.
17 май 12, 10:54    [12567904]     Ответить | Цитировать Сообщить модератору
 Re: Изменение наименований столбцов по условию  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
имхо это надо делать в том приложении, где будут отображатся данные или где они будут формироваться для отчета. Сервер нужен для хранения, извлечения, добавления и иногда для анализа данных
17 май 12, 10:54    [12567912]     Ответить | Цитировать Сообщить модератору
 Re: Изменение наименований столбцов по условию  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
kDnZP
Gizmor, динамика.
* Но задача мягко говоря странная.

По требованию "некоторых приматов" столбец должен быть не "Кт" , а "приход" , что для активных и пассивных счетов различается, вот и делаем представление с изменяемыми названиями )))) , хотя пути решений есть много иных.
Ещё - pivot с названиями столбцов по смыслу.
17 май 12, 10:58    [12567942]     Ответить | Цитировать Сообщить модератору
 Re: Изменение наименований столбцов по условию  [new]
Gizmor
Member

Откуда:
Сообщений: 54
Но ведь представление строится на основе запроса, а как в запросе то это сделать?
17 май 12, 11:11    [12568046]     Ответить | Цитировать Сообщить модератору
 Re: Изменение наименований столбцов по условию  [new]
Glory
Member

Откуда:
Сообщений: 104751
Gizmor
Но ведь представление строится на основе запроса, а как в запросе то это сделать?

Названия поля должны иметь ДО выполнения запроса
Поэтому вам придется написать скрипт, который сначала проанализирует значения в имеющихся записях, а потом на основе результата создаст текст нового запроса
17 май 12, 11:17    [12568088]     Ответить | Цитировать Сообщить модератору
 Re: Изменение наименований столбцов по условию  [new]
denis2710
Member

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

ну для затравки
+

/*
if object_id('dbo.Xlam_Table','U')is not null drop table dbo.Xlam_Table
CREATE TABLE [dbo].[Xlam_Table](
	[columnA] [varchar](10) NULL,
	[columnB] [varchar](10) NULL
) ON [PRIMARY]
go
insert into Xlam_Table(columnA,columnB)
values
 ('xxx','aaa')
,('xxx','1aaa')
,('xxx1','2aaa')

*/



--drop table #t_res
select  ac.name
from    sys.all_columns as ac
where   ac.object_id = object_id('Xlam_table')
declare @cln_name sysname
declare @scr varchar(max)
create table #t_res ( diff_val varchar(50) )
declare cur_column cursor local static
for
select  ac.name
from    sys.all_columns as ac
where   ac.object_id = object_id('Xlam_table')

open cur_column

fetch next from cur_column into @cln_name
while @@FETCH_STATUS = 0 
  begin
    delete  #t_res ;
    set @scr = 'insert into #t_res(diff_val ) select ' + @cln_name + '  from Xlam_table group by ' + @cln_name ;
    print @scr
    exec (@scr) ;
    with  zz ( x )
            as ( select diff_val + '____' 'text()'
                 from   #t_res
                 group by diff_val
                 order by diff_val
                 for    xml path('')
                          , type
               )
      select  x.value('.', 'varchar(100)') as NewColumnName
            , @cln_name OLDColumnName
      from    zz
/*далее скрипт на изменение таблицы ..*/

    fetch next from cur_column into @cln_name

  end

close cur_column
deallocate cur_column

if object_id('tempdb..#t_res','U')is not null drop table #t_res

17 май 12, 11:54    [12568520]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить