易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL常见查询问题(编程)


有些常见的问题在论坛中不断出现,不妨整理一下。
以下语句是在SQLServer2005上实现的,一些语句无法在SS2000上执行。
有用指数是我根据这个问题的常见程度打的分,仅供参考。实际上,当你遇到了这个问题,这个问题哪怕再少见,解决方案也是非常有用的。
1. 生成若干行记录
有用指数:★★★★★
常见的问题类型:根据起止日期生成若干个日期、生成一天中的各个时间段
《SQL Server 2005技术内幕:T-SQL查询》作者建议在数据库中创建一个数据表:
SQL code
--自然数表1-1M
CREATE TABLE Nums(n int NOT NULL PRIMARY KEY CLUSTERED)
--书上介绍了很多种填充方法,以下是最高效的一种,需要SS2005的ROW_NUMBER()函数。
WITH B1 AS(SELECT n=1 UNION ALL SELECT n=1), --2
B2 AS(SELECT n=1 from B1 a CROSS JOIN B1 b), --4
B3 AS(SELECT n=1 from B2 a CROSS JOIN B2 b), --16
B4 AS(SELECT n=1 from B3 a CROSS JOIN B3 b), --256
B5 AS(SELECT n=1 from B4 a CROSS JOIN B4 b), --65536
CTE AS(SELECT r=ROW_NUMBER() OVER(ORDER BY (SELECT 1)) from B5 a CROSS JOIN B3 b) --65536 * 16
INSERT INTO Nums(n)
SELECT TOP(1000000) r from CTE ORDER BY r
有了这个数字表,可以做很多事情,除上面提到的两个外,还有:生成一批测试数据、生成所有ASCII字符或UNICODE中文字符、等等。
经常有高手使用SELECT number from master..spt_values WHERE type = 'P',这是很妙的方法;但这样只有2048个数字,而且语句太长,不够方便。
总之,一个数字辅助表(10万还是100万根据个人需要而定),你值得拥有。
-------------------------------------------------------------------------------
2. 日历表
有用指数:★★★☆☆
《SQL编程风格》一书建议一个企业的数据库应该创建一个日历表:
SQL code
CREATE TABLE Calendar(
date datetime NOT NULL PRIMARY KEY CLUSTERED,
weeknum int NOT NULL,
weekday int NOT NULL,
weekday_desc nchar(3) NOT NULL,
is_workday bit NOT NULL,
is_weekend bit NOT NULL
)
GO
WITH CTE1 AS(
SELECT
date = DATEADD(day,n,'19991231')
from Nums
WHERE n <= DATEDIFF(day,'19991231','20201231')),
CTE2 AS(
SELECT
date,
weeknum = DATEPART(week,date),
weekday = (DATEPART(weekday,


相关文档:

hibernate 多条件组合查询 之 sql 拼接

  public static void main(String[] args) {
      
       Session session = null;
       Transaction tx = null;
       List list = null;
     &nb ......

SQL SERVER定义操作员数据恢复

定义操作员
SQL Server代理完成一个作业后,通知操作员的方法有多种。
例如,通过命令系统把相应的消息写入Windows NT事件日志中,以便通知系统管理员反复读取此日志。
另外一种更好的选择就是使用电子邮件、传呼机或网络传送把警报消息通知给操作员。操作员是SQL Server代理发送消息的接收者,操作员可以在一个作业之前 ......

win7 下 配置 SQL Server 2005 允许远程访问

win7 下 配置 SQL Server 2005 允许远程访问
2010年2月2日 bibiQ
本来一直不愿意配置远程访问SQL server,但今天一狠心把它配好了。
参考了网上的帖子http://www.cnblogs.com/sukiwqy/archive/2009/11/11/1601381.html
step1: 配置SQL Server 外围应用配置器(为 SQL Server 2005 启用远程连接、启用 SQL Server Brow ......

SQL中case when then的使用实例

假设现在News表有以下字段
News_Id,News_Title,News_IsSetTop,News_SetTopTime
其中News_IsSetTop(char(1))是“是否置顶”的含义;News_SetTopTime(DateTime)是置顶时间;
现在要实现:如果News_IsSetTop为"1"时 ,ORDER BY News_IsSetTop DESC,News_Id DESC;News_IsSetTop为"0"时,ORDER BY News_ID DESC ......

[SQL]SQL语句大全(分享)

--语 句 功 能
--数据操作
SELECT --从数据库表中检索数据行和列
INSERT --向数据库表添加新数据行
DELETE --从数据库表中删除数据行
UPDATE --更新数据库表中的数据
--数据定义
CREATE TABLE --创建一个数据库表
DROP TABLE --从数据库中删除表
ALTER TABLE --修改数据库表结构
CREATE VIEW --创建一个视图
DRO ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号