SQL一次查出相关类容避免长时间占用表(上)

/*
server:
db: EDI
*/
-- 以下案例多次查询同一张表,仅有组合条件Name+Direction不同
--可以使用一次查出相关类容避免长时间占用表
USE EDI
GO
DECLARE @OutBoundBusinessID_PO int 
       ,@InboundBusinessID_ItemCatalog int 
       ,@InboundBusinessID_Inventory int 
       ,@InboundBusinessID_ShipNotice int                                       
	   ,@InboundBusinessID_FunctionAck int 
	   ,@OutboundBusinessID_FunctionAck int

SELECT TOP 1 
    @OutBoundBusinessID_PO = ID 
FROM dbo.EDI_CFG_Business WITH(NOLOCK) 
WHERE 
    Name = 'PO' 
    AND Direction = 'O' 
SELECT TOP 1 
    @InboundBusinessID_ItemCatalog = ID 
FROM dbo.EDI_CFG_Business WITH(NOLOCK) 
WHERE 
    Name = 'ItemCatalog'
    AND Direction = 'I'  
SELECT TOP 1 
    @InboundBusinessID_Inventory = ID 
FROM dbo.EDI_CFG_Business WITH(NOLOCK) 
WHERE 
    Name = 'Inventory' 
    AND Direction = 'I'  
SELECT TOP 1 
    @InboundBusinessID_ShipNotice = ID 
FROM dbo.EDI_CFG_Business WITH(NOLOCK) 
WHERE 
    Name = 'ShipNotice' 
    AND Direction = 'I'  
SELECT TOP 1 
    @InboundBusinessID_FunctionAck = ID 
FROM dbo.EDI_CFG_Business WITH(NOLOCK) 
WHERE 
    Name = 'FunctionAck' 
    AND Direction = 'I'
SELECT TOP 1 
    @OutboundBusinessID_FunctionAck = ID 
FROM dbo.EDI_CFG_Business WITH(NOLOCK) 
WHERE 
    Name = 'FunctionAck' 
    AND Direction = 'O'
select  @OutBoundBusinessID_PO 
       ,@InboundBusinessID_ItemCatalog  
       ,@InboundBusinessID_Inventory  
       ,@InboundBusinessID_ShipNotice                                        
	   ,@InboundBusinessID_FunctionAck  
	   ,@OutboundBusinessID_FunctionAck 

-----更改后
USE EDI
GO
DECLARE @OutBoundBusinessID_PO int 
       ,@InboundBusinessID_ItemCatalog int 
       ,@InboundBusinessID_Inventory int 
       ,@InboundBusinessID_ShipNotice int                                       
	   ,@InboundBusinessID_FunctionAck int 
	   ,@OutboundBusinessID_FunctionAck int

select @OutBoundBusinessID_PO=POO
	,@InboundBusinessID_ItemCatalog=ItemCatalogI
	,@InboundBusinessID_Inventory=InventoryI
	,@InboundBusinessID_ShipNotice=ShipNoticeI
	,@InboundBusinessID_FunctionAck=FunctionAckI
	,@OutboundBusinessID_FunctionAck=FunctionAckO
--select POO,ItemCatalogI,InventoryI,ShipNoticeI,FunctionAckI,FunctionAckO
from
(
	select ID,Name_Direction
	from
	(
		select ID,Name+Direction as Name_Direction FROM dbo.EDI_CFG_Business WITH(NOLOCK)
		where 
		Name in('PO','ItemCatalog','Inventory','ShipNotice','FunctionAck')
		and  Direction in('I','O')
	) as T1
	where Name_Direction in('POO','ItemCatalogI','InventoryI','ShipNoticeI','FunctionAckI','FunctionAckO')
) as T2
pivot
(
	max(ID)
	for
	Name_Direction in([POO],[ItemCatalogI],[InventoryI],[ShipNoticeI],[FunctionAckI],[FunctionAckO]) 

) as piv


select  @OutBoundBusinessID_PO 
       ,@InboundBusinessID_ItemCatalog  
       ,@InboundBusinessID_Inventory  
       ,@InboundBusinessID_ShipNotice                                        
	   ,@InboundBusinessID_FunctionAck  
	   ,@OutboundBusinessID_FunctionAck 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏积累沉淀

Listener监听器

在Servlet技术中已经定义了一些事件,并且我们可以针对这些事件来编写相关的事件监听器,从而对事件作出相应处理。Servlet事件主要有3类:Servlet上...

18410
来自专栏程序员的SOD蜜

SQLSERVER 2012计算上一条,下一条数据的函数

实际需求很普遍,比如求销售数据的每天与头一天的销售增长量。这里用一个汽车行驶数据来做例子: 先初始化数据: CREATE TABLE [dbo].[CarDat...

1935
来自专栏哲学驱动设计

Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)

为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了。但是只支持了一些简单的、常用的条件查询,支持的力度很有限。特...

1637
来自专栏互联网开发者交流社区

SQL一次查出相关类容避免长时间占用表(下)

1054
来自专栏Hadoop数据仓库

Oracle 中的树查询和 connect by

Oracle 中的树查询和 connect by 使用 connect by 和 start with 来建立类似于树的报表并不难,只要遵循以下基本原则即可:...

1717
来自专栏杨建荣的学习笔记

通过使用hint unnest调优sql语句(r4笔记第38天)

生产环境中有一条sql语句通过sql_monitor看到执行的时间实在是太惊人了,竟然达到了13个小时,而且还没有执行完。 SessionAPPC (20015...

2748
来自专栏木宛城主

利用Microsoft.VisualBasic中TextFieldParser解析器把CSV格式倒入数据库

写了个Demo,利用Microsoft.VisualBasic这个程序集中的TextFieldParser解析器解析CSV格式的文件,然后将解析的数据插入到相...

17010
来自专栏码神联盟

碎片化 | 第四阶段-35-Struts2-Spring结合jdbc实现查询列表-视频

如清晰度低,可转PC网页观看高清版本: http://v.qq.com/x/page/q0566q6xkdu.html 结合jdbc实现查询功能 步骤: 1...

3339
来自专栏岑玉海

RavenDb学习(七) 异步工作以及维度查询

1、异步执行 var entity = new Company {Name = "Async Company #2", Id = "companies/2"}...

2695
来自专栏杨建荣的学习笔记

简单对比MySQL和Oracle中的一个sql解析细节 (r5笔记第40天)

SQL的语法解析器是一个很强大的内置工具集,里面会涉及到很多的编译原理的相关知识,语法分析,词法分析。。一大堆看起来很理论的东东,不过看起来枯燥之余,它们的价值...

3328

扫码关注云+社区