电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

SQL Server中多行多列連接成為單行單列

瀏覽:29日期:2023-11-06 09:17:33

原始結構:

Column1 Column2

----------- ----------

1 A

1 B

2 C

2 D

2 E

3 F

查詢效果:

Column1 Column2

----------- ------------------

1 A,B

2 C,D,E

3 F

即將 Column1 相同的行的 Column2 連成一列。

不知如何描述此種用法,是否具有像交叉表相關的 Cross-Table 和 Pivot 之類的約定成熟的專業稱謂?

是否也可以稱為另一種 Cross-Table ?

此需求應該是常見的,網上也有許多DEMO,只是 CSDN 中頻繁有新手提問,現簡單實現一個DEMO,以便參考。

-- 多行多列連接成為單行單列示例:需要一個自定義函數

-- http://community.csdn.net/Expert/TopicView3.asp?id=5603231

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[VertToHorzSample]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[VertToHorzSample]

GO

-- 建立測試數據

CREATE TABLE VertToHorzSample(

Column1 int,

Column2 varchar(100)

)

GO

INSERT INTO VertToHorzSample(Column1, Column2)

SELECT 1, 'A'

UNION ALL

SELECT 1, 'B'

UNION ALL

SELECT 2, 'C'

UNION ALL

SELECT 2, 'D'

UNION ALL

SELECT 2, 'E'

UNION ALL

SELECT 3, 'F'

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ConvertVertToHorz]') and xtype in (N'FN', N'IF', N'TF'))

drop function [dbo].[ConvertVertToHorz]

GO

-- 建立輔助函數

CREATE FUNCTION ConvertVertToHorz(@Col1Val int)

RETURNS VARCHAR(8000)

AS

BEGIN

-- 實際項目中,應該考慮 @RetVal 是否會超過 8000 個字符

DECLARE @RetVal varchar(8000)

SET @RetVal = ''

-- 通過遞歸 SELECT 連接指定列存儲到臨時變量中

SELECT @RetVal = Column2 + ',' + @RetVal FROM VertToHorzSample WHERE Column1 = @Col1Val

-- 連接多列

-- SELECT @RetVal = Column2 + ',' + Column3 + ',' + Column4 + ',' + @RetVal FROM VertToHorzSample WHERE Column1 = @Col1Val

-- 去掉尾巴的 , (逗號)

IF LEN(@RetVal) > 0

SET @RetVal = LEFT(@RetVal, LEN(@RetVal) - 1)

--PRINT @RetVal

RETURN @RetVal

END

GO

-- 測試

SELECT Column1, dbo.ConvertVertToHorz(Column1) Column2 FROM (SELECT DISTINCT Column1 FROM VertToHorzSample) t

/**//*

Column1 Column2

----------- ------------------

1 A,B

2 C,D,E

3 F

*/

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[VertToHorzView]') and OBJECTPROPERTY(id, N'IsView') = 1)

drop view [dbo].[VertToHorzView]

GO

-- 可以建立一個視圖

CREATE VIEW dbo.VertToHorzView

AS

SELECT Column1, dbo.ConvertVertToHorz(Column1) Column2

FROM (SELECT DISTINCT Column1 FROM dbo.VertToHorzSample) t

GO

-- 測試視圖

SELECT * FROM VertToHorzView

/**//*

Column1 Column2s

----------- -----------------

1 A,B

2 C,D,E

3 F

*/

標簽: Sql Server 數據庫
主站蜘蛛池模板: 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 | 陕西安玻璃自动感应门-自动重叠门-磁悬浮平开门厂家【捷申达门业】 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 远程会诊系统-手术示教系统【林之硕】医院远程医疗平台 | 压力控制器,差压控制器,温度控制器,防爆压力控制器,防爆温度控制器,防爆差压控制器-常州天利智能控制股份有限公司 | 沈阳激光机-沈阳喷码机-沈阳光纤激光打标机-沈阳co2激光打标机 | 体坛网_体坛+_体坛周报新闻客户端| 咖啡加盟-咖啡店加盟-咖啡西餐厅加盟-塞纳左岸咖啡西餐厅官网 | 国资灵活用工平台_全国灵活用工平台前十名-灵活用工结算小帮手 | 斗式提升机_链式斗提机_带式斗提机厂家无锡市鸿诚输送机械有限公司 | 加气混凝土砌块设备,轻质砖设备,蒸养砖设备,新型墙体设备-河南省杜甫机械制造有限公司 | 上海道勤塑化有限公司 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 台式低速离心机-脱泡离心机-菌种摇床-常州市万丰仪器制造有限公司 | 石磨面粉机|石磨面粉机械|石磨面粉机组|石磨面粉成套设备-河南成立粮油机械有限公司 | [官网]叛逆孩子管教_戒网瘾学校_全封闭问题青少年素质教育_新起点青少年特训学校 | 至顶网| 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 学习安徽网| 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 渣油泵,KCB齿轮泵,不锈钢齿轮泵,重油泵,煤焦油泵,泊头市泰邦泵阀制造有限公司 | 免联考国际MBA_在职MBA报考条件/科目/排名-MBA信息网 | 行业分析:提及郑州火车站附近真有 特殊按摩 ?2025实地踩坑指南 新手如何避坑不踩雷 | 玖容气动液压设备有限公司-气液增压缸_压力机_增压机_铆接机_增压器 | 阜阳成人高考_阜阳成考报名时间_安徽省成人高考网 | 天然鹅卵石滤料厂家-锰砂滤料-石英砂滤料-巩义东枫净水 | 精密冲床,高速冲床等冲压设备生产商-常州晋志德压力机厂 | 全自动不干胶贴标机_套标机-上海今昂贴标机生产厂家 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | 防渗土工膜|污水处理防渗膜|垃圾填埋场防渗膜-泰安佳路通工程材料有限公司 | 合肥弱电工程_安徽安防工程_智能化工程公司-合肥雷润 | 大米加工设备|大米加工机械|碾米成套设备|大米加工成套设备-河南成立粮油机械有限公司 | 广东高华家具-公寓床|学生宿舍双层铁床厂家【质保十年】 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | 电销卡 防封电销卡 不封号电销卡 电话销售卡 白名单电销卡 电销系统 外呼系统 | 自动记录数据电子台秤,记忆储存重量电子桌称,设定时间记录电子秤-昆山巨天 | 玉米深加工设备-玉米深加工机械-新型玉米工机械生产厂家-河南粮院机械制造有限公司 | 细胞染色-流式双标-试剂盒免费代做-上海研谨生物科技有限公司 |