[英]SQL Column Name as Row Value
我有一個包含“區域”、“目標”和“實際”列的表格,如下所示。
地區 | 目標 | 實際的 |
---|---|---|
一種 | 10 | 1 |
乙 | 20 | 2 |
我想用我的查詢更改此表,以便目標列和實際列按如下方式排列。
地區 | 類型 | 數量 |
---|---|---|
一種 | 目標 | 10 |
一種 | 實際的 | 1 |
乙 | 目標 | 20 |
乙 | 實際的 | 2 |
我應該如何為此准備查詢或我應該使用哪種方式? 提前致謝。
您可以為此使用 UNION:
select region, 'Target' as type, target as amount
from the_table
union all
select region, 'Actual' as type, actual
from the_table
order by region, type desc
另一種選擇是使用橫向連接從列中構造兩行:
select t.region, x.*
from the_table t
cross join lateral (
values ('Target', target), ('Actual', actual)
) as x(type, amount)
order by t.region, x.type desc;
這兩個查詢都是 100% 標准的 ANSI SQL。 然而,並非所有數據庫產品都支持橫向連接或類似的VALUES
子句。
您可以使用UNPIVOT
對表格進行單一訪問,該表格完全符合描述的內容:
select /*+ gather_plan_statistics */ * from t unpivot( Amount for Type_ in ( Target as 'Target' , Actual as 'Actual' ) )
\n地區 | 類型_ | 數量\n :----- | :----- | -----:\n一個 | 目標 | 10\n一個 | 實際 | 1\n乙 | 目標 | 20\n乙 | 實際 | 2\n
\n | PLAN_TABLE_OUTPUT |\n | :------------------------------------------------- --------------------------------------------- |\n | SQL_ID 9rr5wa2yjxf42,子編號 0 |\n | ------------------------------------- |\n | select /*+ gather_plan_statistics */ * from t unpivot( Amount for |\n | 輸入_(目標為'目標',實際為'實際'))|\n | |\n | 計划哈希值:605266837 |\n | |\n | -------------------------------------------------- --------------------------------------------- |\n | | 身份證 | 操作 | 姓名 | 開始 | 電子行 | A行 | 時代 | 緩沖器 | 閱讀 | |\n | -------------------------------------------------- --------------------------------------------- |\n | | 0 | 選擇語句 | | 1 | | 4 |00:00:00.01 | 2 | 1 | |\n | |* 1 | 查看 | | 1 | 4 | 4 |00:00:00.01 | 2 | 1 | |\n | | 2 | 轉軸 | | 1 | | 4 |00:00:00.01 | 2 | 1 | |\n | | 3 | 表訪問已滿| T | 1 | 2 | 2 |00:00:00.01 | 2 | 1 | |\n | -------------------------------------------------- --------------------------------------------- |\n | |\n | 謂詞信息(由操作 id 標識):|\n | -------------------------------------------------- - |\n | |\n | 1 - filter("unpivot_view_005"."AMOUNT" 不為空) |\n | |\n
db<> 在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.