Recommandé (gratuit) : Tutoriel SQL
Conversion ligne-colonne
1. 🎜>
Question : Supposons qu'il existe un tableau de scores des élèves (tb) comme suit :
Voulez devenir (obtenir le résultats suivants) :
Code :
WITH tb(姓名,课程,分数) AS ( SELECT N'张三',N'语文',74 UNION ALL SELECT N'张三',N'数学',83 UNION ALL SELECT N'张三',N'物理',93 UNION ALL SELECT N'李四',N'语文',79 UNION ALL SELECT N'李四',N'数学',86 UNION ALL SELECT N'李四',N'物理',88 ) SELECT 姓名 , MAX(CASE 课程 WHEN '语文' THEN 分数 ELSE 0 END) 语文, MAX(CASE 课程 WHEN '数学' THEN 分数 ELSE 0 END) 数学, MAX(CASE 课程 WHEN '物理' THEN 分数 ELSE 0 END) 物理 FROM tb GROUP BY 姓名
Pagination
Option 1 : Utilisez les formulaires de déclaration de pagination NOT IN et SELECT TOP
SELECT TOP 10 * FROM TestTable WHERE ID NOT IN (SELECT TOP 20 ID FROM TestTable ORDER BY ID) ORDER BY ID
Option 2 : Utilisez un identifiant supérieur à combien et la déclaration de pagination SELECT TOP formulaire
SELECT TOP 10 * FROM TestTable WHERE ID > ( SELECT MAX(id) FROM (SELECT TOP 20 id FROM TestTable ORDER BY id) AS T) ORDER BY ID
Option 3 : Utiliser la fonctionnalité ROW_NUMBER dans SQL Server pour la pagination
SELECT * FROM ( SELECT ROW_NUMBER() OVER(ORDER BY ID DESC) AS ROWID,* FROM TestTable ) AS mytable where ROWID between 21 and 40
Fusionner les résultats
Fusionner les lignes en double
SELECT * FROM A UNION SELECT * FROM B
SELECT * FROM A UNION ALL SELECT * FROM B
Tri aléatoire
SELECT * FROM TestTable ORDER BY NEWID()
SELECT TOP 100 * FROM TestTable ORDER BY NEWID()
5 Séparez les données des deux côtés avec n'importe quel symbole
Par exemple. , si nous utilisons une virgule (,) pour séparer les données, ce sera comme suit. Les données sont divisées comme indiqué ci-dessous :SELECT R, CASE WHEN CHARINDEX(',',R)>1 THEN LEFT(R,CHARINDEX(',',R)-1) ELSE NULL END AS R1 , CASE WHEN CHARINDEX(',',R)>1 THEN RIGHT(R,(LEN(R) - CHARINDEX(',',R))) ELSE NULL END AS R2 FROM t
SELECT CHARINDEX(',',',') --结果是1 SELECT CHARINDEX(',','NULL') --结果是0 SELECT CHARINDEX(',','') --结果是0 SELECT CHARINDEX(',','A,B') --结果是2 SELECT LEN('A,B') --结果是3 SELECT LEN('A,B') - CHARINDEX(',','A,B') --结果是3-2=1 SELECT RIGHT('A,B',( LEN('A,B') - CHARINDEX(',','A,B'))) --结果是 B
6. WAITFOR exécution retardée
Exemple : attendez 1 heure, 2 minutes et 3 secondes avant d'exécuter l'instruction SELECT
WAITFOR DELAY '01:02:03' SELECT * FROM Employee
où TIME attend une heure précise pour démarrer l'exécutionWAITFOR TIME '23:08:00' SELECT * FROM EmployeeCopier après la connexionPlus de recommandations d'apprentissage gratuites associées : SQLserver我是岳哥,最后给大家分享我写的SQL两件套:《SQL基础知识第二版》和《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行数据前线 ——End—— 后台回复关键字:1024,获取一份精心整理的技术干货 后台回复关键字:进群,带你进入高手如云的交流群。 推荐阅读 27岁发明SQL以后,上帝把他带走了 微信8.0不好玩?那可能是你打开方式不正确! 一个员工的离职成本有多恐怖! SQL养成这些好习惯是一笔财富 MySQL基本知识点梳理和查询优化Copier après la connexionCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!