成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server數據庫和Oracle行轉列的特殊方案描述

數據庫 SQL Server
以下的文章主要是介紹SQL Server數據庫和Oracle數據庫行轉列的一種比較典型操作方法,假如你在實際操作中遇到相似的情況,那么以下的文章對你而言一定是良師益友。

文章主要描述的是SQL Server數據庫和Oracle數據庫行轉列的一種比較典型操作方法,對于有些業務來說,數據在表中的存儲與其最終的Grid表現恰好相當于把源表倒轉,那么這個時候我們就碰到了如何把行轉化為列的問題。

為了簡化問題,我們且看如下查詢出來的數據,您不必關心表的設計以及sql語句:

 

對于有些業務來說,數據在表中的存儲和其最終的Grid表現恰好相當于把源表倒轉,那么這個時候我們就碰到了如何把行轉化為列的問題,為了簡化問題,我們且看如下查詢出來的數據,您不必關心表的設計以及sql語句:

 

假設用到的sql語句為:

SELECT [姓名],[時代],[金錢]

 

FROM [test].[dbo].[people]

 

這個表存儲了兩個人在不同時代(時代是固定的三個:年輕、中年和老年)擁有的金幣,其中:

 

張三在年輕、中年和老年時期分別擁有1000、5000、800個金幣;

 

李四在年輕、中年和老年時期分別擁有1200、6000、500個金幣。

 

現在我們想把兩人在不同階段擁有的金幣用類似如下的表格來展現:

 

姓名 年輕 中年 老年

 

張三 1000 5000 800

 

李四 1200 6000 500

 

我們現在考慮用最簡單和直接的辦法來實現,其實關鍵是如何創建那些需要增加的列,且如何設定其值,現在我們來創建“年輕”列,關鍵的問題是,這一列的值如何設定?合法的邏輯應該是這樣:如果該行不是“年輕”時代,那么其“金錢”我們認為是0,那么sql語句如何寫呢?

 

如果是用的SQL Server數據庫,那么肯定要用到case了:

 

case[時代] when '年輕' then [金錢] else 0 end as 年輕

 

 

case when[時代]= '年輕' then [金錢] else 0 end as 年輕

 

如果用的是oracle,那么要用到decode函數,decode(1+1,3,'錯',2,'是',5,'錯','都不滿足下返回的值'),這個函數將返回“是”,具體用法限于篇幅這里不再介紹,相信大家從這個式子可以大概了解到其意思,用decode創建“年輕”列的句子是:完整的sql語句如下所示:

 

decode(時代,'年輕',金錢,0)) 年輕

 

SELECT [姓名],[時代],[金錢], 

case[時代] when '年輕' then [金錢] else 0 end as 年輕,

case[時代] when '中年' then [金錢] else 0 end as 中年,

 

case[時代] when '老年' then [金錢] else 0 end as 老年 

 

FROM [test].[dbo].[people] 

現在我們來看看其執行結果:

 

相信看到這個結果,大家都知道下一步該做什么,那就是分組:按姓名分組,并且對三個時代的金錢進行求和:

select [姓名],sum([年輕]) as 年輕,sum([中年]) as 中年,sum([老年]) as 老年 from

 

(SELECT [姓名],[時代],[金錢], 

 

case[時代] when '年輕' then [金錢] else 0 end as 年輕,

case[時代] when '中年' then [金錢] else 0 end as 中年,

 

case[時代] when '老年' then [金錢] else 0 end as 老年 

 

FROM [test].[dbo].[people]) t

group by [姓名]

 

這里用到了子查詢,是為了邏輯更清晰一點,其實可以不用子查詢;至于oracle下的sql語句,除了要使用decode之外,其余幾乎一致,本人正是在oracle中實現之后才研究了下SQL Server數據庫下的實現方式。

 

最后看看結果:

 

事實上,當列不固定的時候,比如除了“年輕”、“中年”、“老年”以外還有其他的未知的時代,實現思路其實基本一致,只是需要動態生成sql而已。

【編輯推薦】

  1. SQL Server unicode 支持的具體體現
  2. SQL Server2000連接錯誤的原因描述
  3. SQL Server實例中對另個實例的調用
  4. SQL Server identity列,美中不足之處
  5. SQL Server DateTime數據類型的另類解讀
責任編輯:佚名 來源: TT安全
相關推薦

2010-07-22 11:17:52

SQL Server數

2010-07-05 13:29:56

2010-04-09 10:32:03

Oracle 數據庫

2010-07-07 10:31:43

SQL Server數

2010-06-30 11:16:50

SQL Server

2010-05-10 18:54:12

Oracle數據庫索引

2010-04-19 10:00:02

Oracle SQL

2010-07-09 17:16:53

SQL Server數

2010-07-22 13:52:24

2010-07-05 13:36:21

SQL Server

2010-07-08 11:05:14

SQL Server數

2024-10-16 21:17:59

2010-04-26 09:10:09

Oracle數據庫

2010-04-14 15:45:49

Oracle 數據庫

2022-11-04 08:34:27

Oracle數據庫

2010-07-05 12:33:13

SQL Server

2010-04-22 16:16:35

Oracle數據庫

2010-10-26 15:54:02

連接oracle數據庫

2010-04-15 08:57:29

Oracle數據庫

2021-06-23 10:13:00

SQL行轉列列轉行
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 毛片网站在线观看 | 亚洲精品一区二区三区蜜桃久 | 九九热国产视频 | 天天综合天天 | 啪一啪| 久久精品网 | 日韩视频福利 | 久久久久国产一级毛片高清网站 | 日韩欧美在线一区 | 91精品久久久久久久久久 | 在线观看亚洲 | 国产精品一区久久久久 | 亚洲第一成人影院 | 一二区视频 | 久久久资源 | 久久大陆 | 成人国产精品久久 | 欧美福利三区 | 91av入口| 免费一级黄 | 一级毛片在线播放 | 91热爆在线观看 | 秋霞a级毛片在线看 | 伊人一区 | 久久久亚洲成人 | 国产精品久久国产精品 | 国产精彩视频在线观看 | 国产成人综合网 | 天天看天天操 | 久久精品中文字幕 | a在线观看 | 青青草免费在线视频 | 自拍第1页| 在线精品一区 | 久久一二区 | 国产欧美一区二区精品久导航 | 亚洲精品一级 | 亚洲男人天堂网 | 国产一区 日韩 | 国产欧美视频一区 | 亚洲天堂色 |