再学TSQL基础--单表查询

SELECT custid, orderdate, orderid,
  ROW_NUMBER() OVER(PARTITION BY custid ORDER BY orderdate, orderid) AS rownum
FROM Sales.Orders
ORDER BY custid, rownum;

--having SUM(qty*unitprice) >10000

3.对每个客户的订单日期排序

 

5.在order by 加限制排序条件

OR region IS NULL;

SELECT orderid, orderdate, custid, empid
FROM Sales.Orders
WHERE orderdate = DATEADD(month, DATEDIFF(month, '19991231', orderdate), '19991231');

 

1.返回 每月最后一天订单

EXEC sp_helpconstraint N'SCORE'

DATEDIFF(month, '19991231', orderdate)  相差多少月  从19991231到 orderdate之间先查多少月

可以认为在同一SELECT子句中不同时指定DISTINCT和ROW NUMBER是一条最佳实践,

SELECT empid, firstname, lastname, titleofcourtesy,
  CASE titleofcourtesy
    WHEN 'Ms.'  THEN 'Female'
    WHEN 'Mrs.' THEN 'Female'
    WHEN 'Mr.'  THEN 'Male'
    ELSE             'Unknown'
  END AS gender
FROM HR.Employees;

SELECT empid, firstname, lastname, titleofcourtesy,
CASE 
WHEN titleofcourtesy IN('Ms.', 'Mrs.') THEN 'Female'
WHEN titleofcourtesy = 'Mr.' THEN 'Male'
ELSE 'Unknown'
END AS gender
FROM HR.Employees;

cast是ANSI的标准SQL.

DATEADD(month, DATEDIFF(month, '19991231', orderdate), '19991231') 中间是加上的月数  最后一个从什么时间开始加

--from

 

本内容是我学习tsql2008的阅读笔记

第一种 是指向搜索  固定的指向  第二种没有可以多字段条件

GROUP BY

  1. 姓氏a上有相同的 

    SELECT empid, firstname, lastname FROM HR.Employees WHERE lastname LIKE '%a%a%';

--select

两个条件 0,1 默认排序规则 通过int 对相应的条件进行排序

SYSUTCDATETIME() as [sysutcdatetime],

 使用EMONTH 对输入的日期返回月末日期   类似动态条件

exec sp_tables

4.条件筛选case

在大多数情况下,在过滤条件中对列进行函数化处理,极有可能造成相应列上的索引无法使用,降低查询效率,解决方案是使用等值的范围查询.例如:

SELECT custid, region
FROM Sales.Customers
ORDER BY
  CASE WHEN region IS NULL THEN 1 ELSE 0 END, region;

--orderdate,

SELECT orderid, orderdate, custid, empid
FROM Sales.Orders
WHERE orderdate = EOMONTH(orderdate);

SQL支持两种字符数据类型:普通字符和Unicode字符。

两种写法  记住 可以用动态条件 区分记录

 

--ORDERDATE = dateadd(month,datediff(month,'19991231',orderdate),'19991231')

SQL中的三值逻辑,如果想返回region列不等于WA的所有行,如下:

RANK 和 DENSE_RANK为具有相同逻辑排序值的所有行生成相同的排名。

DISTINCT

--empid

SELECT orderid FROM sales.Orders WHERE YEAR(ORDERDATE)=2007

SELECT

普通字符使用一个字节来保存每个字符,所以限制这个列所支持的语言只能是英语。

HAVING

 

----每个月最后一天生成的订单

getutcdate() as [getutcdate],

将字符串文字转成日期类型时,如果没有指定时间,sqlserver则默认用午夜时间作为其时间值.

获取表的元数据信息:

SYSDATETIMEOFFSET() as [sysdatetimeoffset]

--custid,

SYSDATETIME() as [sysdatetime],

因为DISTINCT在这种情况下不起任何作用。

--empid,firstname,lastname

TOP 是TSQL所特有的,用来限制返回的行数或百分比。

WHERE

 

CURRENT_TIMESTAMP AS [CURRENTDATE],

--SUM(qty*unitprice) as totalvalue

SYSUTCDATETIME() AS [SYSUTCDATETIME]

TOP

--FROM

--select

 

SELECT

FROM HR.Employees

--where

GETDATE() as [getdate],

本文由美高梅官方网站发布于数据统计,转载请注明出处:再学TSQL基础--单表查询

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。