Sql查询技巧
1、 表A04中的含有A、B、C、D四个字段,当按A字段分组后,如果D等1,则只统计B的值,如果D等0,则只统计C的值。
CREATE TABLE A04(A VARCHAR(20),B INT,C INT,D INT)
INSERT INTO A04 VALUES('01',20,7,'0')
INSERT INTO A04 VALUES('01',10,8,'1')
INSERT INTO A04 VALUES('02',20,7,'1')
INSERT INTO A04 VALUES('02',10,8,'0')
SELECT A,SUM(CASE D WHEN 1 THEN B WHEN 0 THEN C END) FROM A04 GROUP BY A
2、 如何实现有一组有规则的编号(如200305310001…200305310999)
DECLARE @I INT,@C VARCHAR(20)
SELECT @I=1
WHILE @I<1000 BEGIN
SELECT @C=CASE WHEN @I<10 THEN '000'+CAST(@I AS CHAR(1))
WHEN @I BETWEEN 10 AND 99 THEN '00'+CAST(@I AS CHAR(2))
WHEN @I BETWEEN 100 AND 999 THEN '0'+CAST(@I AS CHAR(3))
END
SELECT @C=CONVERT(VARCHAR(20),GETDATE(),112)+@C
SELECT @C --在查询分析器中输出
SELECT @I=@I+1
END
3、现在有三个表,结构如下
Score(FScoreId 成绩记录号,FSubID 课程号,FStdID 学生号,FScore 成绩)
student:(FID 学生号,FName 姓名)
subject:(FSubID 课程号,FSubName 课程名),
怎么能实现这个表:
姓名 英语 数学 语文 历史
张萨 78 67 89 76
王强 89 67 84 96
李三 70 87 92 56
李四 80 78 97 66
SELECT A.FNAME AS 姓名,
英语 = SUM(CASE B.FSUBNAME WHEN '英语' THEN C.FSCORE END),
数学 = SUM(CASE B.FSUBNAME WHEN '数学' THEN C.FSCORE END),
语文 = SUM(CASE B.FSUBNAME WHEN '语文' THEN C.FSCORE END),
历史 = SUM(CASE B.FSUBNAME WHEN '历史' THEN C.FSCORE END)
FROM STUDENT A, SUBJECT B, SCORE C
WHERE A.FID = C.FSTDID AND B.FSUBID = C.FSUBID GROUP BY A.FNAME
4、有两个表,用一条SQL语句算出商品A,B目前还剩多少?表结构如下:
商品名称mc 商品总量sl 表一(AAA)
A 100
B 120
商品名称mc 出库数量sl 表二(BBB)
A 10
A 20
B 10
B 20
SELECT TA.商品名称,A-B AS 剩余数量 FROM
(SELECT 商品名称,SUM(商品总量) AS A FROM AAA GROUP BY 商品名称)TA,
(SELECT 商品名称,SUM(出库数量) AS B FROM BBB GROUP BY 商品名称)TB
WHERE TA.商品名称=TB.商品名称
6、有一个商品销售表,记载了某月商品的销售数量,现在要为所有商品排名次,放到一个单独的字段中,就是说达到右边显示的效果,如何作?
BU1032 5 NULL BU1032 5 2
PS2091 3 NULL PS2092 3 3
PC8888 50 NULL PC8888 50 1
UPDATE X SET ORD=(SELECT COUNT(*)+1 FROM X B WHERE B.QTY>X.QTY)
7、本人有一张表单, 要求统计COL1~COL6中不等于2的列的个数,数据如下:
————————————————————————————————
ROW_ID | COL1 | COL2 | COL3 | COL4 | COL5 | COL6 |
1 | 2 | 1 | 1 | 2 | 3 | 2 |
2 | 1 | 1 | 2 | 2 | 2 | 2 |
3 | 2 | 3 | 2 | 2 | 1 | 2 |
4 | 2 | 2 | 2 | 2 | 1 | 2 |
5 | 1 | 2 | 2 | 2 | 2 | 2 |
6 | 2 | 2 | 2 | 2 | 2 | 1 |
————————————————————————————————
要求结果如下:
—————————
ROW_ID | COUNT |
1 | 3 |
2 | 2 |
3 | 2 |
4 | 1 |
5 | 1 |
6 | 1 |
SELECT ROW_ID,(6-(CASE WHEN COL1=2 THEN COL1 / 2 ELSE 0 END)
-(CASE WHEN COL2=2 THEN COL2 / 2 ELSE 0 END)
-(CASE WHEN COL3=2 THEN COL3 / 2 ELSE 0 END)
-(CASE WHEN COL4=2 THEN COL4 / 2 ELSE 0 END)
-(CASE WHEN COL5=2 THEN COL5 / 2 ELSE 0 END)
-(CASE WHEN COL6=2 THEN COL6 / 2 ELSE 0 END))AS COUNT FROM TABLE_A
8、有一客户表,数据如下:
客户 日期 资金
F001 2003-03-05 123.00
F002 2003-03-04 1223.00
F002 2003-03-02 1123.00
F003 2003-03-05 1231.00
F003 2003-03-04 1232.00
要求选出每个客户最新的哪条记录 组成一个结果集,结果如下:
F001 2003-03-05 123.00
F002 2003-03-04 1223.00
F003 2003-03-05 1231.00
SELECT A.客户, B.日期, A.资金 FROM 客户资金表 A,
(SELECT 客户, MAX(日期) 日期 FROM 客户资金表 GROUP BY 客户 ) B
WHERE A.客户 = B.客户 AND A.日期 = B.日期
9、用游标将根据sys_orgmenber表中的member字段为依据将org字段更新到sys_user 表中username对应的reg_num字段信息 ?
10、下表,记录数据较多,要求对同一分类的数据进行排序?
CREATE TABLE A_TEST(工號VARCHAR(10), 姓名 varchar(10), 時間VARCHAR(20), 序號INT)
INSERT INTO A_TEST VALUES('001',' abc ',’17:40’,0)
INSERT INTO A_TEST VALUES('001','abc',’08:00’,0)
INSERT INTO A_TEST VALUES('001',' abc ',’13:28’,0)
INSERT INTO A_TEST VALUES('001',' abc ',’12:01’,0)
INSERT INTO A_TEST VALUES('002','def',’07:30’,0)
INSERT INTO A_TEST VALUES('002','def',’22:59’,0)
结果
工號 姓名 時間 序號
001 abc 08:00 1
001 abc 12:01 2
001 abc 13:28 3
001 abc 17:40 4
002 def 07:30 1
002 def 22:59 2
UPDATE A_TEST SET ORD=(
SELECT COUNT(*)+1 FROM A_TEST B WHERE B.SJ<A_TEST.SJ AND B.ID=A_TEST.ID)
11、学生关系:S(Sno,Sname,Ssex,Sage,class)
Sno-学号,class-班级,Sname-姓名,Ssex-性别,Sage-年龄
问题:列出至少有12名男生的班号。
Select Class
FROM S
GROUP BY class,Ssex
HAVING (COUNT(Class)>=12) AND (Ssex='男')
12、计算一个月第一天的SQL 脚本,周(wk)的时间间隔来计算哪一天是本周的星期一,用年(yy)的时间间隔来显示这一年的第一天,季度的第一天
select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
13、原纪录:
11 AA,BB,CC,DD
想变成
11 AA
11 BB
11 CC
11 DD
怎么写语句?
create table tb其不意(id int,name varchar(500))
insert tb其不意 values(11,'AA,BB,CC,DD')
select top 500 id=identity(int,1,1) into # from syscolumns a,syscolumns b
select *
from
(
select a.id,name=substring(a.name,b.id,charindex(',',a.name+',',b.id)-b.id)
from tb其不意 a,# b
where b.id<=len(a.name) and substring(','+a.name,b.id,1)=','
) x
drop table tb其不意,#
相关推荐
SQL查询相关技术,源码大放送! 10.1 SELECT子句 426 实例292 查询特定列数据 426 实例293 使用列别名 428 实例294 在列上加入计算 430 EX10_03 实例295 使用函数设置条件 431 10.2 查询...
在"22高级查询.sql"这个文件中,可能包含了这些高级查询技巧的实际应用示例。通过分析这些例子,你可以更好地理解如何在实际场景中运用这些技术。例如,可能有查询用于合并多个表的数据,或者用于统计特定条件下的...
在SQL Server数据库管理系统中,...以上知识点只是“SQL SERVER项目案例”中可能涉及的一部分,具体案例可能涵盖更深入的实战技巧和最佳实践。在实际操作中,根据项目需求,还需要灵活应用并不断学习新的特性和技术。
通过阅读[美河学习在线eimhe.com]MySQL查询理解.pdf,你可以更详细地了解这些概念,并找到更多实用的案例来提升你的MySQL SQL查询技巧。记住,实践是最好的老师,不断尝试和优化你的查询,将帮助你在数据库管理领域...
《SQL Server 2005 技术内幕:T-SQL查询源码》是一本深入探讨SQL Server 2005中T-SQL查询技术的专业书籍。T-SQL(Transact-SQL)是Microsoft SQL Server数据库管理系统中使用的SQL扩展版本,它在标准SQL的基础上增加...
附录A_Microsoft SQL Server 2008技术内幕:T-SQL查询.pdf很可能包含了作者对特定查询技术的深入分析和实用技巧,而"使用说明.txt"可能提供了如何使用书中源代码和示例的指导。"TSQLQuerying20090710"可能是一个包含...
在本文档中,作者叶文胜和满学璐来自黄冈职业技术学院,他们通过实例详细解释了SQL查询的不同技巧,旨在为读者提供实用的参考信息和专业指导。通过对本文档的学习,开发者应能更好地掌握在***中运用SQL进行高效数据...
本资源整理了大量实用的 SQL 查询代码案例,旨在帮助学习者更好地掌握数据库部分的 SQL 查询技巧。这些查询代码案例涵盖了基本的数据检索、数据过滤、数据统计、数据分析等多方面的内容,为学习者提供了实践操作的...
它详细介绍了T-SQL的内部体系结构,包含了非常全面的编程参考,提供了使用Transact-SQL(T-SQL)的专家级指导,囊括了非常全面的编程参考,揭示了基于集合的查询的强大威力,并包含大量来自专家们的参考和建议。...
文件列表中的"Microsoft SQL Server 2005技术内幕:T-SQL查询.part3.rar"和"Microsoft SQL Server 2005技术内幕:T-SQL查询.part4.rar"是该书的后续部分,将覆盖更多高级主题和实践案例,进一步深化对T-SQL的理解。
本文将详细介绍SQL查询优化的策略和技巧,并通过实例代码展示如何提升查询性能。 SQL查询优化是一个持续的过程,需要对数据库系统有深入的了解和细致的调整。通过本文的探讨,我们了解到了查询优化的重要性、执行...
《SQL查询的艺术》全面地介绍了数据库的基础知识和SQL查询的技巧,通过丰富的实例,帮助读者掌握常见的SQL应用。全书共分19章,按照数据定义、数据查询、数据操纵、数据控制、事务控制和程序化SQL的顺序,详细地讲解...
通过实例训练和练习,学习者可以逐步掌握SQL和PL/SQL的使用技巧,包括基本查询、排序、条件查询、函数应用以及更复杂的查询技术。这些知识对于数据库管理员、开发人员以及其他需要与数据库交互的角色来说至关重要。 ...
这个"VB实现的SQL复合查询实例"提供了一个实际应用的例子,它利用了SQLQueryTJ.dll这个控件,帮助VB开发者高效地执行多条件查询。 SQLQueryTJ.dll是一个数据库访问组件,它为VB提供了方便的接口,可以处理复杂的SQL...
### SQL 时间段查询详解 #### 一、概述 在处理具有日期时间字段的数据时,我们经常需要筛选出特定时间段内的数据。例如,在本案例中,需要获取某表中7月1日至7月31日之间晚上10点到早上6点的数据。这种查询涉及到...
8. **高可用性与灾难恢复**:SQL Server提供多种高可用性解决方案,如镜像、Always On 可用性组和故障转移集群实例。了解这些技术及其配置,可以在系统故障时快速恢复服务。 9. **分区表**:当表数据量巨大时,使用...
### SQL查询的艺术:掌握高效查询的关键技巧 在数据库管理和数据科学领域中,SQL(Structured Query Language)作为一门标准的语言被广泛应用于数据检索、更新及管理等操作中。一个高效的SQL查询不仅能提高系统的...
《SQL.chm》可能是关于SQL的离线帮助文档,通常包含了SQL的基础语法、函数、操作和查询技巧等内容。CHM是Microsoft的 Compiled HTML Help 格式,用户可以通过它快速查找和学习SQL的各种概念和命令。 《SQL语句大全...
下面通过几个具体的SQL查询示例来进一步说明上述技巧的应用: **示例1:** ```sql SELECT employee.emp_name, department.dep_name FROM department, employee WHERE (employee.dep_id = department.dep_id) AND ...