当前位置:  数据库>sqlserver

sql server查询排序的例子

    来源: 互联网  发布时间:2014-08-29

    本文导语:  1.建一张客户表,包含客户名称,联系人,电话号码,公司地址. 2.建一张订单表,包含订单编号,客户ID,供应商ID,订单金额,客户支付状态,供应商支付状态,订单日期. 3.建一张供应商表,包含供应商名称,联系人,电话号,...

1.建一张客户表,包含客户名称,联系人,电话号码,公司地址.
2.建一张订单表,包含订单编号,客户ID,供应商ID,订单金额,客户支付状态,供应商支付状态,订单日期.
3.建一张供应商表,包含供应商名称,联系人,电话号,供应商地址
 

代码如下:

create table customer
(
customerID int primary key identity(1,1) ,
customerName varchar(50),
cuslinkMan varchar(50),
customerPhone varchar(12),
companyAdress varchar(100)
)

 create table supplier
 (
 supplierID INT primary key identity(1,1) ,
 supplierName varchar(50),
 supLinkeMan varchar(50),
 supAdress varchar(100)
 )
 
 create table orderForm
 (
 orderID int identity(1,1),
 orderNum varchar(50),
 customerID int,
 supplierID int,
 orderMoney decimal ,
 custState int,
 orderState int ,
 orderTime datetime,
 constraint pk_order primary key(orderID) ,
 constraint fk_supplier foreign key(supplierID) references supplier(supplierID),
 constraint fk_customer foreign key(customerID) references customer(customerID)
 )
 
insert into customer(customerName,cuslinkMan,customerPhone,companyAdress) values('太阳','刘敏','18762676815','无锡西区')
 
insert into dbo.supplier(supplierName,supLinkeMan,supAdress)
values('安泰','李丹','大连')

insert into dbo.orderForm(orderNum,customerID,supplierID,orderMoney,custState,orderState,orderTime)
values('0001','1','1','10000','0','0','2012.12.21')

练习一:写存储过程,根据订单日期,客户,供应商来查询订单,包含客户,供应商名称,订单详细信息,订单日期可以为空,客户跟供应商可以全选.
 

代码如下:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

createPROCEDURE 订单查询

@订单日期 datetime,
@客户varchar(50),
@供应商varchar(50)
 AS
 BEGIN
 SET NOCOUNT ON;
 
 SELECT orderNum, C.customerName,S.supplierName ,orderMoney,custState ,orderState ,orderTime
 from dbo.orderForm O,dbo.customerC,dbo.supplier S
 where
 C.customerID=O.customerID
 and S.supplierID=O.supplierID
 --判断O.orderTime
 and
 (
 @订单日期 =''
 or @订单日期 is null or O.orderTime = @订单日期
 )
 and --判断客户
 (
@客户='-1' or C.customerName=@客户
 )
 and--判断供应商
 (
@供应商='-1' or S.supplierName=@供应商
 )
 END
 GO
 
EXEC 订单查询 '2012-12-21','星星','上海'

练习二:写存储过程,查询订单数最多的前3个客户的订单信息。

方法一:
 

代码如下:

ALTER PROCEDURE [dbo].[订单总数前三]

AS
BEGIN

SELECT O.*
from dbo.orderForm O
where
 O.customerID in
(
SELECT top 3O.customerID -- ,COUNT(O.orderNum) as 'aaa'
from dbo.orderForm O
group by O.customerID
order by COUNT(O.orderNum) DESC
)
END

方法二:
 

代码如下:
CREATE PROCEDURE 订单前三
AS
BEGIN
select O.* from orderFormO
join
(
select
 top 3customerID
from(
 select customerID ,COUNT(orderNum) AS EE FROM dbo.orderForm GROUP BY customerID
) as TT order by EE desc
)as KK
on O.customerID = KK.customerID
END
GO

练习三:写存储过程,查询订单金额最多的前3个客户的订单信息。
 

代码如下:

USE [test]
GO
/****** Object:StoredProcedure [dbo].[订单金额前三]Script Date: 12/26/2012 09:30:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[订单金额前三]

AS
BEGIN

SET NOCOUNT ON;

-- Insert statements for procedure here
SELECT O.orderID,C.customerID ,customerName,S.supplierName ,orderMoney,custState ,orderState ,orderTime
from dbo.orderForm O,dbo.customerC,dbo.supplier S
where
C.customerID=O.customerID
and S.supplierID=O.supplierID
and O.customerID in
(
SELECT top 3 O.customerID--, sum(O.orderMoney)AS 订单总金额
from dbo.orderForm O
group by O.customerID
order by sum(O.orderMoney) desc
)
END

练习四:写sql,删除3条供应商数据,并且相应订单的供应商ID也置为null(这里应该是更新操作)
 

代码如下:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE 删除供应商信息
-- Add the parameters for the stored procedure here
@供应商1ID int,
@供应商2ID int,
@供应商3ID int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
update dbo.orderForm
set supplierID=null
where supplierID=@供应商1ID
or supplierID=@供应商2ID
or supplierID=@供应商3ID

delete from dbo.supplier
where supplierID=@供应商1ID
or supplierID=@供应商2ID
or supplierID=@供应商3ID
END
GO

exec 删除供应商信息 '2','3','4'

练习五:查询不存在供应ID的订单信息,用(not exits)
 

代码如下:

CREATE PROCEDURE 查询无供应商的订单信息

AS
BEGIN

SET NOCOUNT ON;

-- Insert statements for procedure here
SELECT * from orderForm A wherenot EXISTS
(
select supplierID from dbo.supplier B where B.supplierID=A.supplierID
)
END
GO

exec 查询无供应商的订单信息


    
 
 

您可能感兴趣的文章:

  • 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
  • SQL分组排序去除重复实例
  • 有关sql server的排序问题
  • Oracle 中文字段进行排序的sql语句
  • 大家讨论一下EJB QL的功能,和标准SQL相比,缺少什么功能?比如排序功能等。
  • sql分组查询(按组内个数排序)
  • SQL-ORDER BY 多字段排序(升序、降序)
  • SQL分组排序去重复的小实例
  • sql查询表中根据某列排序的任意行语句
  • sql server分组排序之row_number()over函数的使用
  • sql中获取分组排序后数据方法实例
  • 在sql中不指定Order by排序是按照主键吗
  • sql Server使用ROW_NUMBER时不排序的实例代码
  • sql多条件多字段排序(图文教程)
  • sql语句获取分组排序后数据
  • sql union查询与排序的例子
  • SQL字符型字段按数字型字段排序实现方法
  • sql语句排序子句order by用法实例
  • sql获取分组排序后数据的脚本
  • sql server分组查询与排序的例子
  • sql server简单查询的例子(sql入门)
  • sql server 使用ntile获取数据的例子
  • Sql Server一次更新多列数据的例子
  • SQL SERVER导入、导出文本文件的例子
  • SqlServer中用exec处理sql字符串中含有变量的小例子
  • sql语句提取括号中文字的例子
  • 我急需一个JSP+sql2000编写的论坛,哪位能提供一个完整的例子,不胜感激----在线等待
  • sql自连接查询的例子(图文)
  • sql2005递归查询的例子
  • 拼接SQL字符串与日期模糊查询的例子
  • Sql Server 删除主键与重建主键的例子
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • SQL Server 2008如何进行数据库分离和附加详细介绍
  • 微软网站下载的Ms SQL Server2000 JDBC Driver,必须用英文版的SQL server2000吗?
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • 安装sql server 2008 management提示已安装 SQL Server 2005 Express的解决方法
  • SQL Server 2008 事件探查器(SQL SERVER Profiler) 列的说明
  • (X86/X64)安装sql server 2005 过程中提示“无法启动sql server的 启动”的解决方法
  • SQL Server降权运行 SQL Server 2000以GUESTS权限运行设置方法
  • MS SQL Server2014链接到MS SQL Server 2000的解决方案及问题处理
  • SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
  • sql server不存在 sql server拒绝访问第1/3页
  • SQL Server误区30日谈 第5天 AWE在64位SQL SERVER中必须开启
  • 一定得帮我看看sql server2000通过sql server2000jdbc driver的代码
  • SQL Server统计SQL语句执行时间的脚本
  • SQL Server误区30日谈 第21天 数据损坏可以通过重启SQL Server来修复
  • SQL Server误区30日谈 第3天 即时文件初始化特性可以在SQL Server中开启和关闭
  • 创建 sql server 链接服务器的sql代码
  • jsp jdbc为什麽不能把数据insert到sql server 中,也不能从sql server中提取数据?!
  • 如何处理此错误:java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]没有执行可选特性
  • sql server 2005 三个常用的小sql
  • SQL Server 中查看SQL句子执行所用的时间
  • 推荐SQL Server 重新恢复自动编号列的序号的sql代码
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL客户端管理工具 SQuirreL SQL Client
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • sql2005 大数据量检索分页的sql代码


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3