第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何創(chuàng)建SQLServer函數(shù)將子查詢中的多行“連接”到單個分隔字段中?

如何創(chuàng)建SQLServer函數(shù)將子查詢中的多行“連接”到單個分隔字段中?

倚天杖 2019-06-14 16:27:46
如何創(chuàng)建SQLServer函數(shù)將子查詢中的多行“連接”到單個分隔字段中?為了舉例說明,假設我有兩個表,如下所示:VehicleID Name1         Chuck2         Larry LocationID VehicleID City1          1         New York2          1         Seattle3          1          Vancouver4          2         Los Angeles5          2         Houston我想寫一個查詢來返回以下結果:VehicleID Name    Locations1         Chuck   New York, Seattle, Vancouver2         Larry   Los Angeles, Houston我知道這可以使用服務器端游標來完成,即:DECLARE @VehicleID intDECLARE @VehicleName varchar(100)DECLARE @LocationCity varchar(100)DECLARE @Locations varchar(4000)DECLARE  @Results TABLE(   VehicleID int   Name varchar(100)   Locations varchar(4000))DECLARE VehiclesCursor CURSOR FORSELECT   [VehicleID], [Name]FROM [Vehicles]OPEN VehiclesCursorFETCH NEXT FROM VehiclesCursor INTO   @VehicleID, @VehicleNameWHILE @@FETCH_STATUS = 0BEGIN   SET @Locations = ''   DECLARE LocationsCursor CURSOR FOR   SELECT     [City]   FROM [Locations]   WHERE [VehicleID] = @VehicleID  OPEN LocationsCursor  FETCH NEXT FROM LocationsCursor INTO     @LocationCity  WHILE @@FETCH_STATUS = 0   BEGIN     SET @Locations = @Locations + @LocationCity    FETCH NEXT FROM LocationsCursor INTO       @LocationCity  END   CLOSE LocationsCursor  DEALLOCATE LocationsCursor  INSERT INTO @Results (VehicleID, Name, Locations) SELECT @VehicleID, @Name,    @LocationsEND     CLOSE VehiclesCursorDEALLOCATE VehiclesCursorSELECT * FROM @Results但是,正如您所看到的,這需要大量的代碼。我想要的是一個通用函數(shù),它允許我這樣做:SELECT VehicleID     , Name     , JOIN(SELECT City FROM Locations WHERE VehicleID = Vehicles.VehicleID, ', ') AS LocationsFROM Vehicles這個是可能的嗎?或者類似的東西?
查看完整描述

3 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

如果使用的是SQLServer 2005,則可以使用for XML path命令。

SELECT [VehicleID]
     , [Name]
     , (STUFF((SELECT CAST(', ' + [City] AS VARCHAR(MAX)) 
         FROM [Location] 
         WHERE (VehicleID = Vehicle.VehicleID) 
         FOR XML PATH ('')), 1, 2, '')) AS LocationsFROM [Vehicle]

它比使用游標容易得多,而且似乎運行得相當好。


查看完整回答
反對 回復 2019-06-14
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

我不相信在一個查詢中存在這樣的方法,但是您可以使用一個臨時變量來玩這樣的把戲:

declare @s varchar(max)set @s = ''select @s = @s + City + ',' from Locationsselect @s

它肯定比游標上的代碼少,而且可能更有效率。


查看完整回答
反對 回復 2019-06-14
  • 3 回答
  • 0 關注
  • 1371 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號