簡體   English   中英

行的SQL值作為列名

[英]SQL value of a row as column name

我想考慮做以下事情的可能性:

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

因此,其他字段將顯示為列名。

如果您對靜態查詢感到滿意,這很容易:

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'

如果您對靜態查詢不滿意,這意味着列的數量和名稱將隨數據而變化。 因此,在這種情況下,您將必須動態構建查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM