多列转1列 SqlServer 实现oracle10g的 wmsys.wm
有这么一个表 create table tb(id int , value varchar ( 10 )) insert into tb values ( 1 , ' aa ' ) insert into tb values ( 1 , ' bb ' ) insert into tb values ( 2 , ' aaa ' ) insert into tb values ( 2 , ' bbb ' ) insert into tb values ( 2 , '
有这么一个表
<span>create</span> <span>table</span> tb(id <span>int</span>, value <span>varchar</span>(<span>10</span><span>)) </span><span>insert</span> <span>into</span> tb <span>values</span>(<span>1</span>, <span>'</span><span>aa</span><span>'</span><span>) </span><span>insert</span> <span>into</span> tb <span>values</span>(<span>1</span>, <span>'</span><span>bb</span><span>'</span><span>) </span><span>insert</span> <span>into</span> tb <span>values</span>(<span>2</span>, <span>'</span><span>aaa</span><span>'</span><span>) </span><span>insert</span> <span>into</span> tb <span>values</span>(<span>2</span>, <span>'</span><span>bbb</span><span>'</span><span>) </span><span>insert</span> <span>into</span> tb <span>values</span>(<span>2</span>, <span>'</span><span>ccc</span><span>'</span><span>) </span><span>insert</span> <span>into</span> tb <span>values</span>(<span>3</span>, <span>'</span><span>ddd</span><span>'</span><span>) </span><span>insert</span> <span>into</span> tb <span>values</span>(<span>3</span>, <span>'</span><span>fff</span><span>'</span>)

需求:把id为3所以数据转为1行。以|分隔
1.把id为3的数据转 xml
xml
select '|'+(value) from tb
where id=3
for xml path('')
效果
2. 去掉第一个 | 替换成空格
需要函数 Stuff,, 类似对字符串操作这样的函数还有 replace() right () left() substring() 看需求使用
STUFF 函数将字符串插入另一字符串。它在第一个字符串中从开始位置删除指定长度的字符;然后将第二个字符串插入第一个字符串的开始位置。
Transact-SQL 语法约定
语法
<span>STUFF</span> <strong>(</strong> <em>character_expression </em><strong>, </strong><em>start </em><strong>, </strong><em>length </em><strong>,</strong><em>character_expression </em><strong>)</strong> Copy after login |
stuff((select '|'+(value) from tb
where id=3
for xml path('')),1,1,'')
这句无法单独运行
3.最终实现
<span>select</span> id ,value<span>=</span><span>stuff</span>((<span>select</span> <span>'</span><span>|</span><span>'</span><span>+</span>(value) <span>from</span><span> tb </span><span>where</span> id<span>=</span><span>3</span> <span>for</span> xml path(<span>''</span>)),<span>1</span>,<span>1</span>,<span>''</span>) <span>from</span> tb <span>where</span> id<span>=</span><span>3</span> <span>group</span> <span>by</span> id
ps:去掉一个where 得到的结果是不一样的,不懂为何。group by id 有去重的效果
效果图。没有------------
在oracle 数据库中他也有自己的实现。觉得这些东西没有什么的。只要你有需求,必然有答案,只是你接触了没有而已。反正现在编程我们都是站在巨人的肩膀上了。

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



The import steps are as follows: Copy the MDF file to SQL Server's data directory (usually C:\Program Files\Microsoft SQL Server\MSSQL\DATA). In SQL Server Management Studio (SSMS), open the database and select Attach. Click the Add button and select the MDF file. Confirm the database name and click the OK button.

For objects with the same name that already exist in the SQL Server database, the following steps need to be taken: Confirm the object type (table, view, stored procedure). IF NOT EXISTS can be used to skip creation if the object is empty. If the object has data, use a different name or modify the structure. Use DROP to delete existing objects (use caution, backup recommended). Check for schema changes to make sure there are no references to deleted or renamed objects.

To view the SQL Server port number: Open SSMS and connect to the server. Find the server name in Object Explorer, right-click it and select Properties. In the Connection tab, view the TCP Port field.

When the SQL Server service fails to start, here are some steps to resolve: Check the error log to determine the root cause. Make sure the service account has permission to start the service. Check whether dependency services are running. Disable antivirus software. Repair SQL Server installation. If the repair does not work, reinstall SQL Server.

If you accidentally delete a SQL Server database, you can take the following steps to recover: stop database activity; back up log files; check database logs; recovery options: restore from backup; restore from transaction log; use DBCC CHECKDB; use third-party tools. Please back up your database regularly and enable transaction logging to prevent data loss.

SQL Server database files are usually stored in the following default location: Windows: C:\Program Files\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data The database file location can be customized by modifying the database file path setting.

How to implement dual WeChat login on Huawei mobile phones? With the rise of social media, WeChat has become one of the indispensable communication tools in people's daily lives. However, many people may encounter a problem: logging into multiple WeChat accounts at the same time on the same mobile phone. For Huawei mobile phone users, it is not difficult to achieve dual WeChat login. This article will introduce how to achieve dual WeChat login on Huawei mobile phones. First of all, the EMUI system that comes with Huawei mobile phones provides a very convenient function - dual application opening. Through the application dual opening function, users can simultaneously

If the SQL Server installation fails, you can clean it up by following these steps: Uninstall SQL Server Delete registry keys Delete files and folders Restart the computer
