sqlserver 将多行数据查询合并为一条数据
有这样一个需求:表T_FUN_TASK为任务表,有字段(TASKID,TASKNAME),表T_FUN_LOGBOOK为日志表,有字段(LOGID,TASKID,LOGDATE),一个任务可持续多天,每天会记录一条日志。在查询表T_FUN_TASK时,需将任务表中的 LOGDATE 查询出来作为一列 LOGDATES显示。
有这样一个需求:表T_FUN_TASK为任务表,有字段(TASKID,TASKNAME),表T_FUN_LOGBOOK为日志表,有字段(LOGID,TASKID,LOGDATE),一个任务可持续多天,每天会记录一条日志。在查询表T_FUN_TASK时,需将任务表中的 LOGDATE 查询出来作为一列 LOGDATES显示。
T_FUN_TASK
T_FUN_LOGBOOK
查询结果
此结果查询方法可以用存储过程轻松实现,这里我要介绍的是sqlserver FOR XML PATH语句的应用,在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据
且合并为一条数据,看以下示例:
<span>SELECT</span> LOGDATE <span>FROM</span> T_FUN_LOGBOOK <span>WHERE</span> TASKID<span>=</span><span>231</span> <span>FOR</span> XML PATH
结果为:
首先,将日期格式转化为需要的格式:
<span>SELECT</span> <span>CONVERT</span>(<span>VARCHAR</span>(<span>100</span>), LOGDATE, <span>111</span>) <span>FROM</span> T_FUN_LOGBOOK <span>WHERE</span> TASKID<span>=</span><span>231</span> <span>FOR</span> XML PATH
结果变为:
<span>SELECT</span> <span>CONVERT</span>(<span>VARCHAR</span>(<span>100</span>), LOGDATE, <span>111</span>) <span>FROM</span> T_FUN_LOGBOOK <span>WHERE</span> TASKID<span>=</span><span>231</span> <span>FOR</span> XML PATH('')
现在两条结果之间很难区分,需要用下划线将其分隔开来,方法是在CONVERT函数前面加上一个下划线:
<span>SELECT</span> <span>'</span><span>_</span><span>'</span><span>+</span><span>CONVERT</span>(<span>VARCHAR</span>(<span>100</span>), LOGDATE, <span>111</span>) <span>FROM</span> T_FUN_LOGBOOK <span>WHERE</span> TASKID<span>=</span><span>231</span> <span>FOR</span> XML PATH(<span>''</span>)
结果:_2014/01/06_2014/01/07。
在分析了FOR XML PATH语句之后,就来将这个查询结果添加到对T_FUN_TASk的查询结果中去。我的思路是先构建一个子查询,然后查询TASK表时LEFT JOIN这个子查询:
<span>SELECT</span> T1.TASKID,<span>'</span><span>TASKNAME</span><span>'</span> <span>AS</span> TASKNAME,T2.LOGDATES <span>FROM</span><span> T_FUN_TASK T1 </span><span>LEFT</span> <span>JOIN</span> (<span>SELECT</span><span> TASKID, LOGDATES</span><span>=</span>(<span>SELECT</span> <span>'</span><span>_</span><span>'</span><span>+</span><span>CONVERT</span>(<span>VARCHAR</span>(<span>100</span>), LOGDATE, <span>111</span>) <span>FROM</span> T_FUN_LOGBOOK <span>WHERE</span> TASKID<span>=</span>T1.TASKID <span>FOR</span> XML PATH(<span>''</span>)) <span>FROM</span><span> T_FUN_LOGBOOK T1 </span><span>GROUP</span> <span>BY</span> TASKID) T2 <span>ON</span> T2.TASKID<span>=</span><span>T1.TASKID </span><span>ORDER</span> <span>BY</span> T1.TASKID <span>ASC</span>
运行以上SQL后得到的结果为:
发现LOGDATES值的第一个下划线应该去掉,于是修改SQL,应用 STUFF函数去掉第一个下划线:
<span>SELECT</span> T1.TASKID,<span>'</span><span>TASKNAME</span><span>'</span> <span>AS</span> TASKNAME,T2.LOGDATES <span>FROM</span><span> T_FUN_TASK T1 </span><span>LEFT</span> <span>JOIN</span> (<span>SELECT</span><span> TASKID, LOGDATES</span><span>=</span><span>STUFF</span>((<span>SELECT</span> <span>'</span><span>_</span><span>'</span><span>+</span><span>CONVERT</span>(<span>VARCHAR</span>(<span>100</span>), LOGDATE, <span>111</span>) <span>FROM</span> T_FUN_LOGBOOK <span>WHERE</span> TASKID<span>=</span>T1.TASKID <span>FOR</span> XML PATH(<span>''</span>)),<span>1</span>,<span>1</span>,<span>''</span>) <span>FROM</span><span> T_FUN_LOGBOOK T1 </span><span>GROUP</span> <span>BY</span><span> TASKID) T2 </span><span>ON</span> T2.TASKID<span>=</span><span>T1.TASKID </span><span>ORDER</span> <span>BY</span> T1.TASKID <span>ASC</span>
将结果转化为JSON 返回给前端之后,JS按照下划线分隔这个字段的值,即可以得到一个任务下面日志的填写情况。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Pour les objets du même nom qui existent déjà dans la base de données SQL Server, les étapes suivantes doivent être suivies : Confirmez le type d'objet (table, vue, procédure stockée). IF NOT EXISTS peut être utilisé pour ignorer la création si l'objet est vide. Si l'objet contient des données, utilisez un nom différent ou modifiez la structure. Utilisez DROP pour supprimer des objets existants (soyez prudent, sauvegarde recommandée). Vérifiez les modifications de schéma pour vous assurer qu'il n'y a aucune référence à des objets supprimés ou renommés.

Les étapes d'importation sont les suivantes : Copiez le fichier MDF dans le répertoire de données de SQL Server (généralement C:\Program Files\Microsoft SQL Server\MSSQL\DATA). Dans SQL Server Management Studio (SSMS), ouvrez la base de données et sélectionnez Attacher. Cliquez sur le bouton Ajouter et sélectionnez le fichier MDF. Confirmez le nom de la base de données et cliquez sur le bouton OK.

Lorsque le service SQL Server ne parvient pas à démarrer, voici quelques étapes à résoudre : Consultez le journal des erreurs pour déterminer la cause première. Assurez-vous que le compte de service est autorisé à démarrer le service. Vérifiez si les services de dépendance sont en cours d'exécution. Désactivez le logiciel antivirus. Réparez l'installation de SQL Server. Si la réparation ne fonctionne pas, réinstallez SQL Server.

Pour afficher le numéro de port SQL Server : Ouvrez SSMS et connectez-vous au serveur. Recherchez le nom du serveur dans l'Explorateur d'objets, cliquez dessus avec le bouton droit et sélectionnez Propriétés. Dans l'onglet Connexion, affichez le champ Port TCP.

Les fichiers de base de données SQL Server sont généralement stockés à l'emplacement par défaut suivant : Windows : C:\Program Files\Microsoft SQL Server\MSSQL\DATALinux : /var/opt/mssql/data L'emplacement du fichier de base de données peut être personnalisé en modifiant le chemin du fichier de base de données. paramètre.

Si vous supprimez accidentellement une base de données SQL Server, vous pouvez suivre les étapes suivantes pour la récupérer : arrêter l'activité de la base de données ; sauvegarder les fichiers journaux ; vérifier les options de récupération : restaurer à partir d'une sauvegarde ; utiliser DBCC CHECKDB ; outils de fête. Veuillez sauvegarder régulièrement votre base de données et activer la journalisation des transactions pour éviter toute perte de données.

Si l'installation de SQL Server échoue, vous pouvez la nettoyer en suivant ces étapes : Désinstaller SQL Server Supprimer les clés de registre Supprimer les fichiers et dossiers Redémarrer l'ordinateur

Vous êtes confronté à un décalage et à une connexion de données mobile lente sur iPhone ? En règle générale, la puissance de l'Internet cellulaire sur votre téléphone dépend de plusieurs facteurs tels que la région, le type de réseau cellulaire, le type d'itinérance, etc. Vous pouvez prendre certaines mesures pour obtenir une connexion Internet cellulaire plus rapide et plus fiable. Correctif 1 – Forcer le redémarrage de l'iPhone Parfois, le redémarrage forcé de votre appareil réinitialise simplement beaucoup de choses, y compris la connexion cellulaire. Étape 1 – Appuyez simplement une fois sur la touche d’augmentation du volume et relâchez-la. Ensuite, appuyez sur la touche de réduction du volume et relâchez-la à nouveau. Étape 2 – La partie suivante du processus consiste à maintenir le bouton sur le côté droit. Laissez l'iPhone finir de redémarrer. Activez les données cellulaires et vérifiez la vitesse du réseau. Vérifiez à nouveau Correctif 2 – Changer le mode de données Bien que la 5G offre de meilleures vitesses de réseau, elle fonctionne mieux lorsque le signal est plus faible
