十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这个简单:
沁源ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
select
case when
(syddm=1 and id=1) or (syddm=2 and id=2)
then id
else syddm as syddm_t,
case when
(syddm=1 and id=1) or (syddm=2 and id=2)
then id
else syddm as id_t
from table_t;
你的问题不太明确,我只能是假设你的要求是,当syddm、id条件满足你所列出的任意条件时,原syddm列显示id值,原id列显示syddm值。
所以我的解决思路是使用case when来处理,当满足你的两个条件中的任意时,交换两列值。
这种错误最可能出现的情况就是rown列名不存在
你desc mytable后,把那个字段拷出来,不会那个rown的那个圈是零吧?
仔细检查一下吧:)
1、首先建表语法:Create table 表名,字段 1 数据类型 [default 默认值],字段 2 数据类型 [default 默认值],...字段 n 数据类型 [default 默认值]。
2、表删除语法:DROP TABLE 表名。
3、表的修改,在sql中使用alter,可以修改表,添加语法:ALTER TABLE 表名称 ADD(列名 1 类型 [DEFAULT 默认值]。
4、UPDATE(修改)全部修改:UPDATE 表名 SET 列名 1=值 1,列名 2=值 2,....局部修改:UPDATE 表名 SET 列名 1=值 1,列名 2=值 2,....WHERE 修改条件。
5、 最后DELETE(删除)语法 : DELETE FROM 表名 WHERE 删除条件。
不能象修改表那样直接改列名,只能是在定义视图的语句里写新的列名。
Oracle 11g 行列互换 pivot 和 unpivot 说明在Oracle 11g中,Oracle 又增加了2个查询:pivot(行转列) 和unpivot(列转行)
参考:、 一下,网上有一篇比较详细的文档:
pivot 列转行
测试数据 (id,类型名称,销售数量),案例:根据水果的类型查询出一条数据显示出每种类型的销售数量。
?
123456789
create table demo(id int,name varchar(20),nums int); ---- 创建表insert into demo values(1, '苹果', 1000);insert into demo values(2, '苹果', 2000);insert into demo values(3, '苹果', 4000);insert into demo values(4, '橘子', 5000);insert into demo values(5, '橘子', 3000);insert into demo values(6, '葡萄', 3500);insert into demo values(7, '芒果', 4200);insert into demo values(8, '芒果', 5500);
分组查询 (当然这是不符合查询一条数据的要求的)
?
1
select name, sum(nums) nums from demo group by name
行转列查询
?
1
select * from (select name, nums from demo) pivot (sum(nums) for name in ('苹果' 苹果, '橘子', '葡萄', '芒果'));
注意: pivot(聚合函数 for 列名 in(类型)) ,其中 in(‘’) 中可以指定别名,in中还可以指定子查询,比如 select distinct code from customers
当然也可以不使用pivot函数,等同于下列语句,只是代码比较长,容易理解
?
12
select * from (select sum(nums) 苹果 from demo where name='苹果'),(select sum(nums) 橘子 from demo where name='橘子'), (select sum(nums) 葡萄 from demo where name='葡萄'),(select sum(nums) 芒果 from demo where name='芒果');
unpivot 行转列
顾名思义就是将多列转换成1列中去
案例:现在有一个水果表,记录了4个季度的销售数量,现在要将每种水果的每个季度的销售情况用多行数据展示。
创建表和数据
?
1234567
create table Fruit(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int); insert into Fruit values(1,'苹果',1000,2000,3300,5000);insert into Fruit values(2,'橘子',3000,3000,3200,1500);insert into Fruit values(3,'香蕉',2500,3500,2200,2500);insert into Fruit values(4,'葡萄',1500,2500,1200,3500);select * from Fruit
列转行查询
?
1
select id , name, jidu, xiaoshou from Fruit unpivot (xiaoshou for jidu in (q1, q2, q3, q4) )
注意: unpivot没有聚合函数,xiaoshou、jidu字段也是临时的变量
如果列名不适合,那么可以使用alter
table语句的rename
column子句改变列名。语法如下:
alter
table
table_name
rename
column
column_name
to
new_column_name;
你这一题该是
alter
text
rename
textpass
to
password
去试下!