㈠ PL/sql的SQL窗口多出了一条竖线,第一次用的时候没有,不知道哪里设置错了,左侧行号栏也多了一条竖线
右键-隔条
㈡ 关于sql双竖线连接串
我在系统上用oracle测试了,你写的语句不应该有引号
可能是由于你的 id 或 pass这两列的某行上有空值
你可以这样写
select id|| pass as title
from news
where id is not null and pass is not null;
这样可以把空值的排除掉
㈢ SQL数据横列变竖列
以下方法适用于任意多的科目:
--先建立函数,功能是根据给出的姓名,到表中去查找所选科目及成绩并横向列示出来.
CREATE FUNCTION getcoldata
(@XM VARCHAR(18))
RETURNS varchar(1000)
AS
BEGIN
DECLARE @deli VARCHAR(2)
set @deli=' '
declare @f1 varchar(100),@F2 DECIMAL(12,1),@result varchar(1000),@sn0 int
set @result=''
declare ddcursor cursor for select 选修科目,成绩 from 表名 where 姓名=@XM order by 选修科目
open ddcursor
fetch next from ddcursor into @f1,@F2
while @@fetch_status!=-1
begin
set @result=@result+@deli+isnull(@f1,'')+':'+ISNULL(CONVERT(VARCHAR,@F2),'')
fetch next from ddcursor into @f1,@F2
end
close ddcursor
deallocate ddcursor
return (@result)
end
GO
--使用方法:
select 姓名,科目及成绩=dbo.getcoldata(姓名) from (SELECT DISTINCT 姓名 from 表名) a
结果是这样的
姓名 科目与成绩
张三 计算机:75 高等数学:80 物理:77
李四 高等数学:55 微积分:87
王五 语文:78
=============
我这么看您的问题:
1.查询是用来输出的,不是用来统计的:您的这种结果即使用分开字段也是很不容易统计的,要想统计还是原表比较方便.
就是说:这种查询结果更方便输出\查看,原表更方便于作统计.
所以,我劝您,比较科学的作法是保留原表,可以方便的作出包括本查询在内的各种查询.而您如果只保留查询后的表,即使用字段是分开的,那么将很难再作其它统计和查询.因为数据太不规范.
2.可以输出各门分开的EXCEL表:如果您想输出到EXCEL表,您要以把函数中的分隔符改成逗点或制表符(CHAR(9)),直接存成CSV或XLS文档就成了.
3.完全按照您的结果也能输出.但今天我没空了,给你个提示:
先看看我以前的回答中,有一些是关于加序号的,加上序号后就好说了.
===========
加到200分,我就开始为您作分开字段的查询.(办法我知道,但是很麻烦啊)
===============================================
与您的要求完全相同的查询:
为了清楚,先建立一个查询,给每人的科目加序号,如果不理解,执行一下SELECT * FROM MYVIEWNAME就知道了:
=====================
视图改一下:
create view myviewname
as
select 姓名,科目,成绩,序号=(select count(1) from tablename a where a.姓名=b.姓名 and a.科目>=b.科目) from
(select * from tablename where 状态='有效') --以子查询替换了TABLENAME,够直观吧?
b --视图加上了序号字段
go
然后,这就是您要的查询,根据每人所选科目的最大数,可以无限向后延伸,加入科目6,科目7等:
select a.姓名,
科目1=isnull(t1.科目,''),
成绩1=isnull(t1.成绩,''),
科目2=isnull(t2.科目,''),
成绩2=isnull(t2.成绩,''),
科目3=isnull(t3.科目,''),
成绩3=isnull(t3.成绩,''),
科目4=isnull(t4.科目,''),
成绩4=isnull(t4.成绩,''),
科目5=isnull(t5.科目,''),
成绩5=isnull(t5.成绩,'')
from (SELECT DISTINCT 姓名 from tablename) a
left join myviewname t1 on t1.姓名=a.姓名 and t1.序号=1
left join myviewname t2 on t2.姓名=a.姓名 and t2.序号=2
left join myviewname t3 on t3.姓名=a.姓名 and t3.序号=3
left join myviewname t4 on t4.姓名=a.姓名 and t4.序号=4
left join myviewname t5 on t5.姓名=a.姓名 and t5.序号=5
好了,加到200分再选择正确答案!
㈣ sql查询横转竖显示
--建立测试数据
create table tb1
(
id varchar(20) not null,
value varchar(20) not null
)
go
insert into tb1
select '1','aa'
union all
select '1','bb'
union all
select '2','aaa'
go
--由于你这表里没有主健,可以用来做标识用,可以先生成一个临时表,并加上自增字段px用来做唯一标识列
select px=IDENTITY(INT,1,1),id,value
INTO #temptb
from tb1
go
select * from #temptb
go
--动态SQL
declare @sql varchar(8000)
set @sql = 'select'
select @sql = @sql + ',max(case px when ' +CONVERT(varchar(4),px)+ ' then value else '''' end) [' + id + ']'
from (select * from #temptb) a
set @sql = STUFF(@sql,7,1,' ') + ' from #temptb'
exec(@sql)
go
--静态SQL
select max(case px when 1 then value else '' end) [1],
max(case px when 2 then value else '' end) [1],
max(case px when 3 then value else '' end) [2]
from #temptb
go
--删除测试数据
DROP TABLE #temptb
go
DROP TABLE tb1
返回:
(所影响的行数为 3 行)
(所影响的行数为 3 行)
px id value
1 1 aa
2 1 bb
3 2 aaa
(所影响的行数为 3 行)
1 1 2
aa bb aaa
1 1 2
aa bb aaa
(所影响的行数为 1 行)
㈤ sqlserver 数据库里面的双竖线是搞啥用的||
这是一个逻辑运算符or,是一个双目运算符,左右两边若有一个为真,则结果为真。
㈥ Oracel sql developer窗口怎么去掉那条竖线
你好,我看到这个帖子时间已经很久了,不知道现在问题的解决对你是否重要。不过还是希望能帮到其他遇到这个问题的朋友。
打开工具—>首选项—>代码编辑器—>显示,“显示可见右边距”复选框前面的勾去掉就OK了。
㈦ SQL语句里两条竖线表示的是什么意思 select * from tax s where s.YNSJE like '%'||s.tdzzs||'%';
连接词符号,将这两个字符串连接起来,类似一些语言的+,将一些字符串接起来.
这种一般在Oracle数据库或者DB2数据库上面得到体现。
㈧ 请教sql问题,高手回答啊!!!!!下面的语句啥意思,尤其那个双竖杠...
双竖杠是字符串连接符号
'GRANT SELECT ON ' || TABLE_NAME || ' TO BRANDON;'
相当于(假设TABLE_NAME的值为“表名”)
'GRANT SELECT ON 表名 TO BRANDON;'
这里因为表名是变量,所以只能写成用||连接的形式。
其他是些设置显示方面的设置
set heading off——不显示每行的列名
set echo off——不重复显示所要执行的sql语句
set feedback off——不显示sql语句的运行结果
SPOOL GRANTS.SQL——将屏幕显示的结果输出到GRANTS.SQL文件
㈨ SQL中,有个竖杠表示意思如下第一行最右边,还有那个<>表示啥意思可以不要嘛
<>表示可选项,
|表示分隔,或者的意思
就是说上面一句话代表两句话,
ALTER TABLE table_name ADD column_name data_type;
ALTER TABLE table_name MODIFY column_name data_type;
㈩ sql语句里的<>,{},[],(),|是什么含义
<> "不等于"
{} 不知道
[] sqlserver里表名,用户名什么的都用这个括起来
() 就是你知道的()
| 一个竖线不知道,两根||是个连接符