Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Nilai Berbeza Menggunakan STRING_AGG dalam Pelayan SQL?

Bagaimana untuk Mendapatkan Nilai Berbeza Menggunakan STRING_AGG dalam Pelayan SQL?

DDD
DDDasal
2025-01-03 19:52:40197semak imbas

How to Get Distinct Values Using STRING_AGG in SQL Server?

Nilai Berbeza menggunakan STRING_AGG dalam SQL Server

Fungsi STRING_AGG dalam SQL Server 2017 membolehkan anda menggabungkan nilai menjadi satu rentetan. Walau bagaimanapun, ia boleh mengembalikan nilai pendua apabila menggabungkan medan dengan berbilang kejadian.

Pertimbangkan pertanyaan berikut:

SELECT 
    ProjectID,
    STRING_AGG( newID.value, ',') WITHIN GROUP (ORDER BY newID.value) AS NewField
FROM
    [dbo].[Data] WITH(NOLOCK)  
CROSS APPLY 
    STRING_SPLIT([bID],';') AS newID  
WHERE 
    newID.value IN ('O95833', 'Q96NY7-2')  
GROUP BY 
    ProjectID
ORDER BY 
    ProjectID

Pertanyaan ini mengembalikan nilai yang digabungkan, tetapi pendua disertakan:

ProjectID NewField
2 O95833,O95833,O95833,Q96NY7-2,Q96NY7-2,Q96NY7-2
4 Q96NY7-2,Q96NY7-2

Untuk mendapatkan semula nilai unik sahaja, gunakan kata kunci DISTINCT dalam subquery:

SELECT 
 ProjectID
,STRING_AGG(value, ',') WITHIN GROUP (ORDER BY value) AS 
NewField
FROM (
    SELECT DISTINCT 
      ProjectID
    , newId.value 
    FROM [dbo].[Data] WITH (NOLOCK)  
    CROSS APPLY STRING_SPLIT([bID],';') AS newId  
    WHERE newId.value IN (   'O95833' , 'Q96NY7-2'  )  
) x
GROUP BY ProjectID
ORDER BY ProjectID

Subquery ini mengalih keluar pendua sebelum menggunakan fungsi STRING_AGG. Keputusan akhir ialah:

ProjectID NewField
2 O95833, Q96NY7-2
4 Q96NY7-2

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Berbeza Menggunakan STRING_AGG dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn