成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

原始結(jié)構(gòu):

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 連成一列。

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

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

此需求應(yīng)該是常見的,網(wǎng)上也有許多DEMO,只是 CSDN 中頻繁有新手提問,現(xiàn)簡單實(shí)現(xiàn)一個DEMO,以便參考。

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

-- 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

-- 建立測試數(shù)據(jù)

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

-- 建立輔助函數(shù)

CREATE FUNCTION ConvertVertToHorz(@Col1Val int)

RETURNS VARCHAR(8000)

AS

BEGIN

-- 實(shí)際項目中,應(yīng)該考慮 @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

*/

標(biāo)簽: Sql Server 數(shù)據(jù)庫
主站蜘蛛池模板: 精品久久中文字幕有码 | 久草5| 中文字幕免费观看 | 国产午夜亚洲精品一区网站 | 欧美三级网站 | 久章草在线观看 | 久久99亚洲精品久久久久 | 99久久伊人一区二区yy5099 | 国产亚洲精品一区二区三区 | 亚洲免费成人在线 | 亚洲精品无码专区在线播放 | 国产一区二区三区亚洲欧美 | 自拍小视频在线观看 | 长腿校花被啪到腿软视频 | 草草久久97超级碰碰碰免费 | 黑人巨大交牲老太 | 玖玖爱精品 | 国产综合13p | 快色网站 | 精品欧美亚洲韩国日本久久 | 国产孕妇做受视频在线观看 | 日本毛片在线 | 欧美色道| 成人看片黄a免费看视频 | 亚洲一区二区影院 | 美国免费高清一级毛片 | 国产综合成人亚洲区 | 亚洲国产最新在线一区二区 | 9191精品国产费久久 | 精品国产一区二区三区不卡在线 | 欧美一级大黄特黄毛片视频 | 女黄人东京手机福利视频 | 一级a级国产不卡毛片 | 99精品在免费线视频 | 成人三级在线播放 | 一级看片免费视频囗交 | 久草视频免费在线播放 | 国产在线观看午夜不卡 | 18在线| 99精品99| 亚洲爆爽|