文档章节

sql已经完成,生成表

街头要饭
 街头要饭
发布于 2015/05/08 15:11
字数 323
阅读 216
收藏 1
点赞 0
评论 13
 



create table tableone
(
    TableoneID varchar(50),
    orderNo varchar(20),
    Ordernumber varchar(20),
    NUB1 int
) 
insert into tableone values
(NEWID()       ,'S001',    'X3600000001',    2),
(NEWID()          ,'S001',    'X3600000002',    2),
( NEWID()           ,'S002',    'X3600000003',    6),
( NEWID()           ,'S002',    'X3600000004',    6),
(NEWID()           ,'S003',    'X3600000005',    6),
(NEWID()           ,'S003',    'X3600000006',    8)

create table  tabletwo
(
    TabletwoID varchar(50),
    orderNo varchar(20),
    Deliveryitem varchar(20),
    NUB2 int
)
insert into tabletwo values
(NEWID(),           'S001',    'D3600000001',    4),
(NEWID(),           'S002',    'D3600000002',    7),
(NEWID(),           'S003',    'D3600000003',    8),
(NEWID(),            'S003',    'D3600000004',    4),
(NEWID(),            'S003',    'D3600000005',    2);

-- SQL Server
WITH /*
Table1(TableoneID,orderNo,Ordernumber,NUB1)AS(
	SELECT NEWID(),'S001','X3600000001',2 UNION ALL
	SELECT NEWID(),'S001','X3600000002',2 UNION ALL
	SELECT NEWID(),'S002','X3600000003',6 UNION ALL
	SELECT NEWID(),'S002','X3600000004',6 UNION ALL
	SELECT NEWID(),'S003','X3600000005',6 UNION ALL
	SELECT NEWID(),'S003','X3600000006',8
)
	,Table2(TabletwoID,orderNo,Deliveryitem,NUB2)AS(
	SELECT NEWID(),'S001','D3600000001',4 UNION ALL
	SELECT NEWID(),'S002','D3600000002',7 UNION ALL
	SELECT NEWID(),'S003','D3600000003',8 UNION ALL
	SELECT NEWID(),'S003','D3600000004',4 UNION ALL
	SELECT NEWID(),'S003','D3600000005',2
), */
t1 AS (
    SELECT *,
           ROW_NUMBER()OVER(PARTITION BY orderNo ORDER BY orderNumber) rn
      FROM tableone
)
,t2 AS (
    SELECT *,
           ROW_NUMBER()OVER(PARTITION BY orderNo ORDER BY Deliveryitem) rn
      FROM tabletwo
)
,t3 AS (
    SELECT ISNULL(t1.orderNo,t2.orderNo) orderNo,
           ISNULL(t1.rn,t2.rn) rn,
           t1.Ordernumber,
           t1.NUB1,
           t2.Deliveryitem,
           t2.NUB2
      FROM t1
 FULL JOIN t2
        ON t1.orderNo = t2.OrderNo
       AND t1.rn = t2.rn
)
    SELECT NEWID() MergeTableID,
           CASE WHEN rn=1 THEN orderNo ELSE NULL END orderNo,
           Ordernumber,
           NUB1,
           Deliveryitem,
           NUB2
      FROM t3
  ORDER BY t3.orderNo, rn


以上内容在sql2008中实现,为了效率就没用游标

© 著作权归作者所有

共有 人打赏支持
街头要饭
粉丝 2
博文 25
码字总数 14470
作品 0
松江
程序员
加载中

评论(13)

街头要饭
街头要饭

引用来自“霍啸林”的评论

通过视图或临时表给sheet1和sheet2各加一列SeqNo,
ROW_NUMBER() OVER(PARTITION BY 订单编号 ORDER BY 货号,数量) AS SeqNo
假定加了SeqNo列的两个sheet分别为s1和s2
SELECT ... FROM s1 FULL OUTER JOIN s2 ON
(s1.订单编号 = s2.订单编号 AND s1.SeqNo = s2.SeqNo)
我用的是SqlServer,你若是其他db,自己看着改吧
具体写法 理论的我也不懂,我不是做sql了;受累受累
霍啸林
霍啸林
通过视图或临时表给sheet1和sheet2各加一列SeqNo,
ROW_NUMBER() OVER(PARTITION BY 订单编号 ORDER BY 货号,数量) AS SeqNo
假定加了SeqNo列的两个sheet分别为s1和s2
SELECT ... FROM s1 FULL OUTER JOIN s2 ON
(s1.订单编号 = s2.订单编号 AND s1.SeqNo = s2.SeqNo)
我用的是SqlServer,你若是其他db,自己看着改吧
街头要饭
街头要饭

引用来自“霍啸林”的评论

有点挑战性16
你试试?
霍啸林
霍啸林
有点挑战性16
街头要饭
街头要饭

引用来自“zhipu”的评论

  --创建临时表sheet3,表列如第三个表格

  DECLARE Cur CURSOR FOR
  --查询sheet2 得到订单编号
  OPEN Cur
  FETCH NEXT FROM Cur INTO 订单编号
  WHILE @@FETCH_STATUS = 0
  BEGIN
    -- BEGIN
    --根据订单编号查询sheet1
    --插入到临时表sheet3

    FETCH NEXT FROM Cur INTO 订单编号
  END
  CLOSE Cur
  DEALLOCATE Cur

  --查询sheet3
  DROP TABLE sheet3

  --ps 数据量大的话,用游标效率很低
好像不给力啊,能给出具体写法吗?
街头要饭
街头要饭

引用来自“zhipu”的评论

  --创建临时表sheet3,表列如第三个表格

  DECLARE Cur CURSOR FOR
  --查询sheet 得到订单编号
  OPEN Cur
  FETCH NEXT FROM Cur INTO 订单编号
  WHILE @@FETCH_STATUS = 0
  BEGIN
    -- BEGIN
    --根据订单编号查询sheet1
    --插入到临时表sheet3

    FETCH NEXT FROM Cur INTO 订单编号
  END
  CLOSE Cur
  DEALLOCATE Cur

  --查询sheet3
  DROP TABLE sheet3

  --ps 数据量大的话,用游标效率很低
我试试
netdiyer
netdiyer
  --创建临时表sheet3,表列如第三个表格

  DECLARE Cur CURSOR FOR
  --查询sheet2 得到订单编号
  OPEN Cur
  FETCH NEXT FROM Cur INTO 订单编号
  WHILE @@FETCH_STATUS = 0
  BEGIN
    -- BEGIN
    --根据订单编号查询sheet1
    --插入到临时表sheet3

    FETCH NEXT FROM Cur INTO 订单编号
  END
  CLOSE Cur
  DEALLOCATE Cur

  --查询sheet3
  DROP TABLE sheet3

  --ps 数据量大的话,用游标效率很低
netdiyer
netdiyer
  --创建临时表sheet3,表列如第三个表格

  DECLARE Cur CURSOR FOR
  --查询sheet 得到订单编号
  OPEN Cur
  FETCH NEXT FROM Cur INTO 订单编号
  WHILE @@FETCH_STATUS = 0
  BEGIN
    -- BEGIN
    --根据订单编号查询sheet1
    --插入到临时表sheet3

    FETCH NEXT FROM Cur INTO 订单编号
  END
  CLOSE Cur
  DEALLOCATE Cur

  --查询sheet3
  DROP TABLE sheet3

  --ps 数据量大的话,用游标效率很低
街头要饭
街头要饭

引用来自“开源中国首席问题男”的评论

引用来自“街头要饭”的评论

引用来自“开源中国首席问题男”的评论

select * from sheet1 left join sheet2 on sheet1.订单编号=sheet2.订单编号

我试过了 不行

请问报错报什么?

@开源中国首席问题男 看到了吗
街头要饭
街头要饭

引用来自“开源中国首席问题男”的评论

引用来自“街头要饭”的评论

引用来自“开源中国首席问题男”的评论

select * from sheet1 left join sheet2 on sheet1.订单编号=sheet2.订单编号

我试过了 不行

请问报错报什么?

不报错 达不到要求,我把执行结果也给你看看吧待会哈
Lemur开源/lemur-generation

lemur-generation 思考业务,代码它写 Gen是我构思了挺久的一个代码生成项目,之前零零散散也写了不少代码生成,但是很多都不太理想不能够满足通用性和特殊定制性的需求,每次生成出来还要改一部...

Lemur开源
2017/10/30
0
0
DBGenerator:获取PO注解信息生成表sql

开发过程中,常常创建了PO之后,还要去数据库里创建对应的表,相似的过程,却要做两次,有没有感觉很麻烦?使用Hibernate可以生成表,还要去配置,而且无法得到表创建sql,于是 DBGenerator ...

晓叹星沉
2016/08/16
2.5K
17
和lock一起学beego 博客系统开发为例(二)

接着上篇来写《和lock一起学beego 博客系统开发为例(一)》 这篇主要完成以下事项: 1.beego框架,项目的建立 2. 表数据的设计 3. 模型的建立 (这篇在公司里写的,用的是win机器) 一、bee...

lock-li
2016/06/14
764
0
由代码生成数据库结构,保障设计正常传递到实现

我们常常使用代码生成工具来生成表结构。为什么不试试从代码来生成数据库表结构呢? 这个观点有些匪夷所思,但是熟悉Hibernate的同志应该有所体会。Hibernate有一个功能,叫做hbm2ddl,在系统...

土豆饼
2016/06/16
1K
14
数据库优化工具--GXDatabaseUtils

GXDatabaseUtils 能简化数据库操作: 1. 简化了表的创建,通过对象名自动生成表结构; 2. 简化了sql语句的生成,根据参数自动生成sql语句; 3. 简化了sqlite的操作,通过接口实现CRUD操作,简...

petsatan
2014/10/16
658
0
laravel migrate问题

最近在学laravel 发现一个问题:不小心删除了数据库中的所有表,想重新执行 重新生成表,怎么操作啊?我执行的错误如下: [IlluminateDatabaseQueryException] SQLSTATE[42S02]: Base table or...

shanwaixiaolou
2017/11/13
44
1
ibatis与hibernate比较

ibatis与hibernate比较 大家都知道ibatis与hibernate 是持久层框架, 那么在架构选型中,应该选用哪一种框架比较好呢, 首先的原则是基于一定的业务背景, 下面我们来比较一下两个框架的区别: 共...

陈小扁
2016/03/22
54
2
goldengate 复制进程replicat出现ORA-01403 错误

最近,在goldengate的应用场景中,replicat进程经常出现append,start也启动不起来,查看日志,发现出现ora-01403错误,日志内容如下: 2012-09-27 19:06:39 INFO OGG-00996 Oracle GoldenGa...

wyan117
2012/09/29
0
0
存储过程的映射问题

问题:前提是ssh框架整合中,利用了annotation。 现在调用了一存储过程,它实现的是几个不同多表中查询出多条结果。在java文件中如何写这个动态生成表的映射,以前不用annotation时,可在.hb...

guoqiangi1
2011/03/31
400
0
转 关于ORACLE数据导入导出 EXP/IMP(含特殊字段imp报错处理)

关于ORACLE数据导入导出 EXP/IMP(含特殊字段imp报错处理) EXP: 获取帮助 EXP help=y 完全导出:full=y 方案导出 owner=(system,sys,.....) 表导出 tables=(a,b,....) 查询结果导出 tables...

黄双
2010/07/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

gRPC学习笔记

gRPC编程流程 1. proto文件定义 proto文件用于定义需要通过gRPC生成的接口,可以理解为接口定义文档 2. 通过构建工具生成服务基类代码-Maven或Gradle 3. 服务端开发 服务端实现类须实现通过构...

OSC_fly
12分钟前
0
0
Docker Mac (三) Dockerfile 及命令

Dockerfile 最近学习docker的时候,遇到一件怪事,关于docker镜像可能会被破坏,还不知道它会有此措施 所以需要了解构建Dockerfile的正确方法 Dockerfile是由一系列命令和参数构成的脚本,这些命...

___大侠
39分钟前
0
0
NetCat Tutorials

Hacking with Netcat part 1: The Basics Hacking with Netcat part 2: Bind and reverse shells Hacking with Netcat part 3: Advanced Techniques 10 Introduction to Netcat - pdf NetCat......

zungyiu
39分钟前
0
0
Android Studio+NDK+Cmake 移植FFmpeg-4.0.2命令行工具

一、编译 参考大神的帖子,亲测一次编译成功:https://blog.csdn.net/bobcat_kay/article/details/80889398 鉴于以前查文档的经验,这里附上编写例子的时间:2018年7月22日 我用的是ubantu,...

她叫我小渝
39分钟前
0
0
mysql创建数据库

登录MYSQL mysql -u root -p 脚本创建数据库WeChat,并制定默认的字符集是utf8mb4。 CREATE DATABASE Wechat DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci; 授权 grant all......

niithub
54分钟前
0
0
svn: Unable to connect to a repository URL 的解决方案

错误图示: 解决办法:清除本地保存的授权信息; 1:右键点击本地文件夹,选择设置; TortoiseSVN -> Settings 2:在弹出的对话框中选择 Saved Data, 右侧选择:授权地方清理所有。 然后点确...

宁哥实战课堂
今天
1
0
sleep与wait的区别

Thread.sleep(XXX)方法消耗CPU吗? 这个知识点是我之前认识一直有错误的一个知识点,在我以前的认识里面,我一直认为Thread.sleep(1000)的这一秒钟的时间内,线程的休眠是一直占用着CPU的时间...

码代码的小司机
今天
1
0
20位活跃在Github上的国内技术大牛 leij 何小鹏 亚信

本文列举了20位在Github上非常活跃的国内大牛,看看其中是不是很多熟悉的面孔? 1. lifesinger(玉伯) Github主页: https://github.com/lifesinger 微博:@ 玉伯也叫射雕 玉伯(王保平),...

海博1600
今天
1
0
Mybatis收集配置

一、Mybatis取Clob数据 1、Mapper.xml配置 <resultMap type="com.test.User" id="user"> <result column="id" property="id"/> <result column="json_data" property="jsonData" ......

星痕2018
今天
1
0
centos7设置以多用户模式启动

1、旧版本linux系统修改inittab文件,在新版本执行vi /etc/inittab 会有以下提示 # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON......

haha360
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部