oracle 筆記 之 橫表轉豎表

2021-06-10 20:01:08 字數 1892 閱讀 6104

將資料進行周彙總,一天7天  橫表轉豎表

sql:

select t.year_week,

t.project_type,

t.industry,

t.title,

get_content(#year_week#, 1, t.title) z1,

get_content(#year_week#, 2, t.title) z2,

get_content(#year_week#, 3, t.title) z3,

get_content(#year_week#, 4, t.title) z4,

get_content(#year_week#, 5, t.title) z5,

get_content(#year_week#, 6, t.title) z6,

get_content(#year_week#, 7, t.title) z7,

t.username,

get_week_plan(#year_week#, t.title, t.username) as this_week_plan,

get_week_plan(#year_week# + 1, t.title, t.username) as next_week_plan

from user_v_workbook t

呼叫oracle寫的function 分別獲得周資訊和日資訊

create or replace function get_week_plan(pyearweek in number,ptitle in varchar2, pusername in varchar2) return varchar2

--記住:引數和返回值裡的資料型別都不用定義長度

isresult varchar2(4000);    --定義變數,記住oracle中定義變數不需要

begin

for temp_cursor in (select a.content from user_workbook a where a.year_week = pyearweek and a.title = ptitle and a.username = pusername and a.type = 'week') loop

--此處在游標for迴圈中使用查詢

result :=result || temp_cursor.content || ',';

--oracle中字元連線使用||,而sql server中用+

end loop;

result := rtrim(result,',');

--去掉最後乙個空格,還有oracle中的賦值前面沒有set

return result;

end;

create or replace function get_content(p_year_week in number,p_week in number,p_title in varchar2)

return varchar2 is

result varchar2(4000);

begin

result := '';

for x in (select a.content

from user_workbook a

where a.year_week = p_year_week and a.week = p_week and a.title = p_title and a.type = 'day') loop

result := result  || to_char(x.content) || '

';end loop;

return(result);

end get_content;

關於其他方法,前段時間看了乙個封裝的很nb的function 但是可惜最後返回的全是int型別,而臥需要string型別

SQL豎表轉橫表 橫表轉豎表

豎表轉橫表 豎表結構 name course grade 張三語文 75張三 數學80 張三英語 90李四 語文95 李四數學 55轉換後橫表結構 name 語文數學 英語張三 7580 90李四 9555 0sql語句 1 select name,2sum case course when 語文 ...

豎表轉橫表

今天遇到乙個要求將豎表轉換成橫表。以前看過豎表轉橫表但沒寫過,現記錄下來以供學習。任務大體要求如下 教師號 星期號 是否有課 有 有 有 有 有 寫一條sql語句讓你變為這樣的表 教師號 星期一 星期二 星期三 建表 create table teac info teac no number,day...

oracle SQL豎表轉橫表

oracle sql豎表轉橫表 t t student表查詢記錄如下,要轉成橫表 姓名 課程 成績 1 張飛 語文 80 2 張飛 數學 87 3 關羽 語文 97 4 張飛 英語 68 5 關羽 數學 53 6 劉備 語文 90 方法一 用decode實現,select t.name,sum de...