SQL Server简单实现数据的日报和月报功能

本文实例讲述了SQL Server简单实现数据的日报和月报功能。分享给大家供大家参考,具体如下:

--320, SQL SERVER 日报
--查询2009-01-01当天客户A1,A2,A3的订单数量
SELECT Cust_Name
   , CONVERT(CHAR(10), Order_Date, 120) Order_Date
   , SUM(Qty) Qty
FROM Orders_Big
WHERE 1=1
   AND Cust_Name IN ('A1', 'A2', 'A3')
   AND Order_Date >= '2009-01-01'
   AND Order_Date<'2009-01-02'
   /*AND Order_Date -- BETWEEN...AND相当于>=和<=
      BETWEEN '2009-01-01'
         AND '2009-01-02'*/
GROUP BY Cust_Name
   , CONVERT(CHAR(10), Order_Date, 120)
ORDER BY 2, 1
--321. ORACLE 日报
--查询2009-01-01当天客户A1,A2,A3的订单数量
SELECT Cust_Name
 , TO_CHAR(Order_Date, 'YYYY-MM-DD') Order_Date --方法一:转换成字符串类型
 --, TRUNC(Order_Date) Order_Date --方法二:将时分秒信息截断
 , SUM(Qty) Qty
FROM Orders_Big
WHERE 1=1
   AND Cust_Name IN ('A1', 'A2', 'A3')
   AND Order_Date >= DATE'2009-01-01'
   AND Order_Date<DATE'2009-01-02'
GROUP BY Cust_Name
    , TO_CHAR(Order_Date, 'YYYY-MM-DD')--方法一
    --, TRUNC(Order_Date)--方法二
ORDER BY 2, 1
------------------------------10.2------------------------------------
--326,SQL SERVER 月报
SELECT Cust_Name
   , CONVERT(CHAR(7), Order_Date, 120) Order_YrMs
   , CAST(CONVERT(CHAR(7), Order_Date, 120) + '-01' AS DATETIME) Order_Date
   , SUM(Qty) Qty
FROM Orders_Big
WHERE 1=1
  AND Cust_Name IN ('A1', 'A2', 'A3')
  AND Order_Date >= '2009-01-01'
  AND Order_Date<'2009-02-01'
GROUP BY Cust_Name
    , CONVERT(CHAR(7), Order_Date, 120)
ORDER BY 2, 1
--326, ORACLE
SELECT Cust_Name
  , TO_CHAR(Order_Date, 'YYYY-MM') Order_YrMs --方法1
  --, TRUNC(Order_Date, 'MM') Order_Date--方法2
  , SUM(Qty) Qty
FROM Orders_Big
WHERE 1=1
  AND Cust_Name IN ('A1', 'A2', 'A3')
  AND Order_Date >= DATE'2009-01-01'
  AND Order_Date<DATE'2009-02-01'
GROUP BY Cust_Name
  , TO_CHAR(Order_Date, 'YYYY-MM')--方法1
  --, TRUNC(Order_Date, 'MM')--方法2
ORDER BY 2, 1

希望本文所述对大家SQL Server数据库程序设计有所帮助。

(0)

相关推荐

  • SqlServer中的日期与时间函数

    一.Sql Server中的日期与时间函数 1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天 select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间边界数. select datediff(day,'2004-09-01','2004-09-18')

  • SQL Server导入、导出、备份数据方法

    一.导出导入SQL Server里某个数据库 1.在SQL Server企业管理器里选中要转移的数据库,按鼠标右键,选所有任务->备份数据库. 2.备份 选数据库-完全, 目的 备份到 按添加按钮 文件名 在SQL Server服务器硬盘下输入一个自定义的备份数据库文件名(后缀一般是bak) 重写 选重写现有媒体 最后按确定按钮. 如果生成的备份数据库文件大于1M,要用压缩工具压缩后再到Internet上传输. 3.通过FTP或者remote desktop或者pcanywhere等方法 把第二

  • SQL Server解析XML数据的方法详解

    本文实例讲述了SQL Server解析XML数据的方法.分享给大家供大家参考,具体如下: --5.读取XML --下面为多种方法从XML中读取EMAIL DECLARE @x XML SELECT @x = ' <People> <dongsheng> <Info Name="Email">dongsheng@xxyy.com</Info> <Info Name="Phone">678945546</

  • sqlserver中获取月份的天数的方法分享

    如下: 复制代码 代码如下: CREATE FUNCTION [dbo].[udf_DaysInMonth] ( @Date DATETIME ) RETURNS INT AS BEGIN DECLARE @dim AS TABLE (M INT,Dy INT) INSERT INTO @dim VALUES (1,31),(3,31),(5,31),(7,31),(8,31),(10,31),(12,31), (4,30),(6,30),(9,30),(11,30), (2, CASE WHE

  • SQLSERVER简单创建DBLINK操作远程服务器数据库的方法

    本文实例讲述了SQLSERVER简单创建DBLINK操作远程服务器数据库的方法.分享给大家供大家参考,具体如下: --配置SQLSERVER数据库的DBLINK exec sp_addlinkedserver @server='WAS_SMS',@srvproduct='',@provider='SQLOLEDB',@datasrc='10.131.20.100' exec sp_addlinkedsrvlogin 'WAS_SMS','false', NULL,'CustomSMS','Sql

  • SQLserver 实现分组统计查询(按月、小时分组)

    设置AccessCount字段可以根据需求在特定的时间范围内如果是相同IP访问就在AccessCount上累加. 复制代码 代码如下: Create table Counter ( CounterID int identity(1,1) not null, IP varchar(20), AccessDateTime datetime, AccessCount int ) 该表在这儿只是演示使用,所以只提供了最基本的字段 现在往表中插入几条记录 insert into Counter selec

  • sql server日期相减 的实现详解

    复制代码 代码如下: select datediff(year, 开始日期,结束日期);     --两日期间隔年select datediff(quarter, 开始日期,结束日期); --两日期间隔季select datediff(month, 开始日期,结束日期); --两日期间隔月select datediff(day, 开始日期,结束日期); --两日期间隔天select datediff(week, 开始日期,结束日期); --两日期间隔周select datediff(hour,

  • MS SQL Server获取十二个月份的英文缩写

    如果使用DATENAME()函数是取得月份的英文全称,但报表需要,只需显示月份名称缩写即可. 十二个月份的英文缩写,只有五月份是全称与缩写一样,其它月份的缩写仅是取前三位字母.因此Insus.NET写成一个自定义函数: 复制代码 代码如下: -- ============================================= -- Author: Insus.NET -- Create date: 2012-12-18 -- Description: Get Month abbrev

  • SQLSERVER查询所有数据库名,表名,和字段名的语句

    1.获取所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name 2.获取所有表名: SELECT Name FROM DatabaseName..SysObjects Where XType='U' ORDER BY Name XType='U':表示所有用户表; XType='S':表示所有系统表; 3.获取所有字段名: SELECT Name FROM SysColumns WHERE id=Object_Id('TableNa

  • sqlserver获取当前日期的最大时间值

    那你也许会问及,怎样获取当前系统日期的最大时间值,如yyyy-MM-dd 23:59:59.997. 我们可以使用DATEADD函数,来实现,以当前日期的午夜时间值加一天,即得到第二天的午夜时间值,然后再减去3秒,即可以获取当前系统日期的最大时间值. 复制代码 代码如下: DECLARE @Date DATETIME = CURRENT_TIMESTAMP --当前系统日期时间 DECLARE @midnight DATETIME SET @midnight = CAST(CAST(@Date

  • sqlserver中获取date类的年月日语句

    select * from 表名 where Convert(varchar(100),日期字段,23)='2008-12-15' 再给你个Convert函数的应用: 复制代码 代码如下: Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06 Select CONVERT(varchar(100), GETDATE(),

随机推荐