Oracle中的查询语句在SQLServer中怎么实现

在Oracle中有这么一段查询语句
SELECT LPAD('',2*LEVEL) || MATNBR,LOTNBR,CLOTNBR FROM LOTJSK
START WITH MATNBR = ' S1 'AND LOTNBR = ' S2 'CONNECT BY PRIOR CLOTNBR = LOTNBR
如果改用 SQLServer来实现应该怎么写。求大神帮帮忙

Oracle的递归查询的Connect by 很容易理解,SQL Server的查询就要用到CTE了

WITH LLOTJSK(LOTNBR,CLOTNBR,LEVEL,MATNBR) as
(
SELECT LOTNBR,CLOTNBR,LEVEL,MATNBR FROM LOTJSKWHERE MATNBR = ' S1 'AND LOTNBR = ' S2'
UNION ALL
SELECT A.LOTNBR,A.CLOTNBR,B.LEVEL+1,A.MATNBR FROM LOTJSK A,LLOTJSK b where a.CLOTNBR= b.LOTNBR
)
SELECT * from LLOTJSK追问

查询出来的顺序是不一样的,这个应该怎么解决。

追答

可以再写一个Order by啊
如果是递归方向反了的话a.CLOTNBR= b.LOTNBR这个条件 a、b对调一下

追问

Oracle 中显示的是一层一层的比如
1
2
3
2
3
1
而Sqlserver中这么写出来的数据是
1
1
2
2
3
3
说的是这个顺序的问题用什么order by 能排出上面的顺序呢?

追答

Oracle 的没有排序啊,这个顺序就是和它的存储有关系了,干嘛非要一个没排序的顺序呢。。

温馨提示:内容为网友见解,仅供参考
无其他回答

oracle操作指令在SQL server中能使用?
1. **SQL语句基础**:确保理解SQL(Structured Query Language)的基础知识,无论是SQL Server还是Oracle,基本的SQL语句结构和语义都是相通的。例如,SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP等命令在两个系统中使用方式相似。2. **数据类型和约束**:注意数据类型的差异。Oracle和SQL Server...

怎样将ORACLE中的数据转入SQL SERVER,并每天更新?
在安全性标签页设置使用此安全上下文进行,并录入Oracle数据库用户名和密码,服务器选项标签页默认配置即可,确定完成设置。4. 此时,准备工作已完成。在SQL Server企业管理器的安全性中打开刚创建的连接服务器,在右边窗口中可以看到Oracle数据库用户所拥有的所有表名,但直接查看表记录需要使用SQL查询分析器。

oracle环境下编写的语句 能够在sqlserver中执行成功
select * from (select Row_number() over(order by RecordTime desc) r, m.* from Historydata m where 1=1 and m.SiteCode='0107' and m.RecordTime>='2011-10-28 0:00:00' and m.RecordTime<='2011-11-4 23:59:59' ) p where p.r between 1 and 15 就这么简单 。不...

如何将oracle表中数据导入到sqlserver
--对于包含有逻辑或者数据查找的复杂转换,需要使用ActiveX脚本实现 --4、查找:仅仅把数据从一个表移动到另外一个表是一项很简单的任务。但在很多情况下我们都必须在转换的过程中对数据进行修改 --转换任务可以调用查找脚本找出需要的值来替换源数据集中的值 --a、定义一个查找,“名称”:需要替换的...

oracle中的to_char() 在sqlserver2008中如何使用? 如下面的语句
用Round() + Cast()就可以:Select b.unit_name ,a.amount1,a.amount2,a.amount3,a.amount ,cast(Round((a.Rate1 * 100),2) as varchar(13))+'%' Rate1,cast(Round((a.Rate2 * 100),2) as varchar(13))+'%' Rate2,cast(Round((a.Rate3 * 100),2) as varchar(13)),ca...

ORACLE LEFT JOIN 子查询 在SQL SERVER中可以使用如图中的子查询,OR...
Oracle 在 left join 语句上面, 和 sql server 一样的啊, 都是标准的 SQL 语法.上面的 sql 也就是 isnull(a.ChangeDate,'1900-01-01') 语句 需要修改为 NVL ( a.ChangeDate, '1900-01-01')如果 ChangeDate 数据类型是 DATE 的, 那么 NVL ( a....

oracle环境下 编写的sql语句 如何改动能在sqlserver2008中运行 TO_cha...
首先确定一下sqlserver 2008 数据库中有没有对应的表 s 和 h 以及相对应oracle数据的表字段,如果都有的话,那基本条件已经具备。至于to_char 在sqlserver 中可以用 Convert 函数来实现。

sql语句怎么在一个数据库中查找拥有同一字段名的所有表?
1、在Oracle中,这样写就可以解决了 selectcolumn_name,table_namefromuser_tab_columnswherecolumn_name='test_name'2、在SqlServer中,这样写就可以解决了 SELECTCOLUMN_NAME,TABLE_NAMEFROMINFORMATION_SCHEMA.columnsWHERECOLUMN_NAME='test_name'SQL即结构化查询语言(StructuredQueryLanguage),是一种特殊...

如何用sqlserver连oracle
先打开management studio。在server objects下面有个Linked Servers,选中它并右击new linked server。在linked server中输入一个名字,随便取的,在后面执行sql时会用到这名字。provider就选Oracle Provider for OLE DB。 product name就填oracle Data source就是你开始配置odbc时取的名字。其他地方就不用管...

如何在sqlserver中实现oracle decode的功能,并写成一个函数
解决思想:1.把输入参数按照逗号分割 2.实现decode功能 1.字符串分割函数 create function dbo.getstrofindex (@str varchar(1000),@index int =0)returns varchar(1000)as begin declare @str_return varchar(1000)declare @start int declare @next int declare @location ...

相似回答