2014-09-26 4 views
0

Я хотел бы рассмотреть вопрос о возможности сделать следующую вещь:SQL значения строки в качестве имени столбца

create table customers 
(
    ID int identity, 
    name varchar(50) 
) 

create table additional 
(
    ID int identity, 
    customer_id int references customers(ID), 
    input_name varchar(50), 
    input_value varchar(50) 
) 

Он должен быть в состоянии определить имя и значение дополнительного входа для конкретного клиента и отображать его в столбец. Пример:

insert into customers (name) values ("aaa"); 
insert into additional (customer_id,input_name,input_value) values (1,"last name","bbb"); 

Теперь результат, что мне нужно:

customerID | first name | last name 
----------------------------------- 
1   | aaa  | bbb 

так, что дополнительное поле отображается как имя столбца.

ответ

2

Это легко, если вы счастливы со статическим запросом:

SELECT c.customerID, a2.input_value AS first_name, a1.input_value AS last_name 
FROM customers c 
LEFT JOIN additional a1 ON a1.ID = c.ID and a1.input_name = 'last name' 
LEFT JOIN additional a2 ON a2.ID = c.ID and a2.input_name = 'first name' 

Если вы не удовлетворены с помощью статического запроса, это означает, что количество и имена столбцов изменятся с данными. Поэтому в этом случае вам придется динамически строить запрос.

Смежные вопросы