Преобразование столбцов в строки в T-SQL (SQL 2005) - PullRequest
0 голосов
/ 21 сентября 2011

Попытка выяснить, как выполнить запрос, чтобы дать мне результаты желаемым способом:

Таблица автомобилей:

car_id  Make    Model   Color
1   Ford    Focus   Red
2   Ford    Fiesta  Silver
3   Honda   Accord  Silver

Выберите из автомобилей, где car_id = 1

Car_id  1
Make    Ford
Model   Focus
Color   Red

Так что довольно много взяли столбец и превратили его в строку.Использование SQL 2005 (который я использую в качестве нового tat) в качестве базы данных.

Спасибо

Ответы [ 4 ]

2 голосов
/ 21 сентября 2011

Вот простой способ:

;with a as
(
  select id, make, model, color
  from cars
  where id = 1
)
select 'Car_id' [Col1], cast(Car_id as varchar(10)) [Col2]
from a
union all
select 'make', make
from a
union all
select 'Model', Model
from a
union all
select 'Color', Color
from a
1 голос
/ 17 мая 2012

мы можем написать общее решение для любого запроса.

--sample table
SELECT * INTO #cars
FROM (  SELECT 1 car_id, 'Ford' Make, 'Focus' Model,'Red' Color
    UNION all
    SELECT 2 car_id, 'Ford' Make, 'Fiesta' Model,'Silver' Color
    UNION ALL 
    SELECT 3 car_id, 'Honda' Make, 'Accord' Model,'Silver' Color
    ) x

--selected record to #tmp
SELECT * INTO #tmp FROM #cars WHERE car_id=1

--generic solution
DECLARE @sql VARCHAR(max)
SET @sql=''
SELECT @sql=@sql + 'SELECT '''+Name+''' as ColumnName,
    cast(['+Name+'] as varchar(500)) as Value FROM #tmp union all ' 
FROM tempdb.sys.columns 
where  object_id=object_id('tempdb..#tmp')

SET @sql = LEFT(@sql,LEN(@sql)-9)  -- except last 'union all'

EXEC( @sql)

DROP TABLE #tmp,#cars
1 голос
/ 21 сентября 2011

Это проще, чем вы думаете, вы можете объединить эти столбцы в один столбец, что значение одного столбца становится результирующей строкой:

SELECT CarModel + ' ' + CarMake + ' ' + CarColor AS MyColumn FROM MyTable

0 голосов
/ 21 сентября 2011

как насчет

declare @mytable table(car_id int, Make varchar(10), model varchar(10), color varchar(10))

insert @mytable values(1,'Ford','Focus','Red')
insert @mytable values(2,'Ford','Fiesta','Silver')
insert @mytable values(3,'Honda','Accord','Silver')

select 'Car_id ' +convert(varchar, car_id)+char(10)+char(13)+ 
'Make ' + Make + char(10)+char(13)+ 
'Color '+color 
from @mytable
where car_id = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...