Ⅰ mysql 行列轉換怎麼寫
set @i =0;
create table 新表
AS
select @i:=@i+1 as NO,NO1,NO2,NO3,MYA1 as MM
from(
select NO1,NO2,'MYA1 ' as NO3,MYA1 from 表
union all
select NO1,NO2,'MYA2 ',MYA2 from 表
union all
select NO1,NO2,'MYA3 ',MYA3 from 表
union all
select NO1,NO2,'MYA4 ',MYA4 from 表
union all
select NO1,NO2,'MYA5 ',MYA5 from 表
union all
select NO1,NO2,'MYA6 ',MYA6 from 表
)a order by NO1,NO2;
select * from 新表;
Ⅱ mysql中列轉行,並多個欄位轉到一行中的一個欄位上,中間用逗號分開
select ID,group_concat(NAME) as NAME from table group by ID;
select ID,group_concat(NAME SEPARATOR ';') as NAME from a group by ID;
Ⅲ MySQL資料庫動態行轉列
這段時間要弄財務報表,遇到了一個動態行轉列的問題,資料庫用的是mysql的。感覺mysql實現動態行轉列比mssql復雜多了。網上的都是處理的一個表(比較簡單),而我要處理的數據來自於多個表,對於行轉列的行也要進行一定的過濾處理,最後在自己的努力下,總算出來啦,附件是完整代碼。這兩個存儲過程都是帶輸入參數的,一個對要轉的行有處理,一個沒有處理,兩個例子,都放出來,希望可以給遇到同樣問題的朋友一些幫助。
Ⅳ SqlServer資料庫怎麼實現行轉列的sql語句
PIVOT 用於將列值旋轉為列名(即行轉列),在 SQL Server 2000可以用聚合函數配合CASE語句實現
PIVOT 的一般語法是:PIVOT(聚合函數(列) FOR 列 in (…) )AS P
注意:PIVOT、UNPIVOT是SQL Server 2005 的語法,使用需修改資料庫兼容級別(在資料庫屬性->選項->兼容級別改為 90 )
SQL2008 中可以直接使用
完整語法:
table_source
PIVOT(
聚合函數(value_column)
FOR pivot_column
IN(<column_list>)
)
View Code
UNPIVOT 用於將列明轉為列值(即列轉行),在SQL Server 2000可以用UNION來實現
完整語法:
table_source
UNPIVOT(
value_column
FOR pivot_column
IN(<column_list>)
)
Ⅳ mySQL查詢語句行轉列橫向顯示
我僅提供思路給你,至於其它單位,可以單獨摘錄出來,union all
select 始發地 目的地 起步價,sum(case when 區間 > 0 and 區間 <= 20 then 單位價格 else '' end) '0-20(公斤)' ,
sum(case when 區間 > 20 and 區間 <= 50 then 單位價格 else '' end) '20-50(公斤)' ,
sum(case when 區間 > 50 and 區間 <= 100 then 單位價格 else '' end) '50-100(公斤)' from (你的sql語句) t group by t.始發地 ,t.目的地 ,t.起步價
Ⅵ mysql 行轉列
-- ----------------------------
-- Table structure for `TabName`
-- ----------------------------
DROP TABLE IF EXISTS `TabName`;
CREATE TABLE `TabName` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(20) DEFAULT NULL,
`Date` date DEFAULT NULL,
`Scount` int(11) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of TabName
-- ----------------------------
INSERT INTO `TabName` VALUES ('1', '小說', '2013-09-01', '10000');
INSERT INTO `TabName` VALUES ('2', '微信', '2013-09-01', '20000');
INSERT INTO `TabName` VALUES ('3', '小說', '2013-09-02', '30000');
INSERT INTO `TabName` VALUES ('4', '微信', '2013-09-02', '35000');
INSERT INTO `TabName` VALUES ('5', '小說', '2013-09-03', '31000');
INSERT INTO `TabName` VALUES ('6', '微信', '2013-09-03', '36000');
INSERT INTO `TabName` VALUES ('7', '小說', '2013-09-04', '35000');
INSERT INTO `TabName` VALUES ('8', '微信', '2013-09-04', '38000');
-- ------------------------
-- 查看數據
-- ------------------------
SELECT * from TabName ;
-- ------------------------
-- 列轉行統計數據
-- ------------------------
SELECT Date ,
MAX(CASE NAME WHEN '小說' THEN Scount ELSE 0 END ) 小說,
MAX(CASE NAME WHEN '微信' THEN Scount ELSE 0 END ) 微信
FROM TabName
GROUP BY Date <br><br>-- ------------------------
-- 行轉列統計數據
-- ------------------------
<br>select
Date, group_concat(NAME,'總量:',Scount) as b_str from TabName
group by Date
select Date,NAME, group_concat(NAME,'總量:',Scount) as b_str from TabName
group by Date ,NAME
Ⅶ mysql 行轉列,並取最新時間的數據
你好!
你寫的確實有點復雜!
你可以分兩步:
1 . 獲取每個人每個學科的最新考試成績
selectb.name,b.class,b.scorefromscoreb,
(selecta.name,a.class,max(a.time)timsfromscoreagroupbya.name,a.class)a
whereb.name=a.name
anda.class=b.class
anda.tims=b.time;
2 . 進行行專列操作
對上面的數據進行行列轉化操作,比較常見了!
歡迎追問,望採納
Ⅷ mysql行轉列的問題,但是不是並接
單看你這個表內的數據我覺得 這樣就行·····但我感覺你要的可能不是這個意思
Ⅸ mysql怎樣實現行轉列
就是一個動態的行列轉換
CREATE TABLE `c_wssb_zz` (
`aa011` varchar(10) default NULL,
`aa001` varchar(20) default NULL,
`aa014` varchar(20) default NULL,
`aa015` varchar(200) default NULL,
`aab001` varchar(20) default NULL,
`aa010` varchar(30) default NULL,
`aae216` date default NULL,
`aa013` varchar(3) default NULL,
`aa016` varchar(10) default NULL,
`aae218` date default NULL,
`aab034` varchar(20) default NULL,
`aab901` varchar(255) default NULL
)
加入這是要轉換的表,表名不確定,作為一個參數, aab001、AA011這兩個也不確定,也是參數,顯示的結果把AA014這一列的內容橫過來內容,對應AA015, 最後形成的數據格式如下
AAB034,AA011,AA001,AAB001,max(case when aa014='col1' then aa015 else '' end)as col1,max(case when aa014='col2' then aa015 else '' end)as col2,....max(case when aa014='colN' then aa015 else '' end)as colN,AAE216,AAE218,AA013,AA016