2017-09-27 43 views
1

我正在使用stuff函數來獲取ID列表。但也有一些值是重複的:如何從SQL中的字符串中獲取其他值

---------- 
3180,3181,3182,3180,4180 
---------- 
3183,3184,3184,4181 

我只是想獲取不重複的ID,想要的結果的列表:

---------- 
3181,3182,4180 
---------- 
3183,4181 

這是我的查詢:

SELECT oa.AssetId, 
     oal.AssetLineId, 
     SNIds = STUFF((SELECT ', ' + CAST(isn1.Id AS VARCHAR(MAX)) 
        FROM dbo.InventoryOperation o1 
         INNER JOIN dbo.InventoryOperationAsset oa1 ON oa1.OperationId = o1.OperationId 
         INNER JOIN dbo.InventoryOperationAssetLine oal1 ON oal1.OperationAssetId = oa1.OperationAssetId 
         INNER JOIN dbo.InventoryOperationAssetLineSerialNumber ioalsn1 ON ioalsn1.OperationAssetLineId = oal1.OperationAssetLineId 
         INNER JOIN dbo.InventorySerialNumber isn1 ON isn1.Id = ioalsn1.SerialId 
        WHERE oa.AssetId = oa1.AssetId AND oal.AssetLineId = oal1.AssetLineId 
       FOR XML PATH('')),1,2,'') 
FROM dbo.InventoryOperation o 
    INNER JOIN dbo.InventoryOperationAsset oa ON oa.OperationId = o.OperationId 
    INNER JOIN dbo.InventoryOperationAssetLine oal ON oal.OperationAssetId = oa.OperationAssetId 
    INNER JOIN dbo.InventoryOperationAssetLineSerialNumber ioalsn ON ioalsn.OperationAssetLineId = oal.OperationAssetLineId 
GROUP BY oa.AssetId, oal.AssetLineId; 

任何人都可以幫我解決這個問題嗎?如果有人能提供幫助,請提前致謝。

+0

你能分享你r查詢? – JRG

+0

請接受我的回答並投票:) :) – JRG

回答

2

你可以使用

SELECT DISTINCT columns FROM table; 

這可以確保你只能得到不重複。

+0

此查詢將獲得所有唯一的ID(只有一個實例),並且不排除具有重複的ID。它會得到3180和3184也不是所需結果的一部分。 – JRG

2

查詢提供數據STUFF函數應使用以下查詢來獲取只有唯一的ID(如3181,3182,4180,3183,4181),而不是有重複的那些(如3180,3184

SELECT column_name 
    FROM TABLE_NAME 
    GROUP BY column_name 
    HAVING COUNT(*) = 1; 

更新應答與STUFF功能樣本.. 。

SELECT STUFF(', ' + REPLACE((SELECT id + ', ' AS 'data()' 
FROM stackoverflow 
GROUP BY id 
HAVING COUNT(*) = 1 
FOR XML PATH('')), '', ''), 1, 2, '') 

樣品試驗 enter image description here

+0

但我需要使用東西函數來返回ID列表? –

+0

你能分享你的查詢嗎? – JRG

+0

我添加了我的查詢 –

相關問題