將資料進行周彙總,一天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...