Hãy thử điều này một -
DECLARE @temp TABLE
(
Col1 INT
, Col2 NVARCHAR(50)
)
INSERT INTO @temp (Col1, Col2)
VALUES (1, 'ab5defg'), (2, 'ae4eii')
SELECT disword = (
SELECT DISTINCT dt.ch
FROM (
SELECT ch = SUBSTRING(t.mtxt, n.number + 1, 1)
FROM [master].dbo.spt_values n
CROSS JOIN (
SELECT mtxt = (
SELECT CAST(Col1 AS VARCHAR(10)) + Col2
FROM @temp
FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'
)
) t
WHERE [type] = N'p'
AND number <= LEN(mtxt) - 1
) dt
FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'
)
Hoặc thử này -
DECLARE @temp TABLE
(
a CHAR(1), b CHAR(1)
)
INSERT INTO @temp (a, b)
VALUES
('1', 'A'), ('1', 'B'), ('1', 'A'),
('1', 'B'), ('2', 'C'), ('2', 'C')
SELECT a
FROM @temp
UNION
SELECT b
FROM @temp
@Luv: Các bên ngoài 'distinct' sẽ chăm sóc loại bỏ các bản sao. Không sử dụng buộc một thao tác sắp xếp nhiều hơn một lần. – Andomar
Nó làm việc cho tôi ... Ngoài ra tôi muốn biết nếu tôi có nhiều hơn hai cột (Nói 5 cột) .... 5 truy vấn với công đoàn tất cả đang làm việc, nhưng là có bất kỳ phương pháp tối ưu hóa để làm điều đó .. hoặc Tôi phải làm bằng cách đề cập đến 5 truy vấn cho 5 cột – usr021986
@Andomar: Kế hoạch truy vấn giống nhau nếu chúng ta xóa truy vấn riêng biệt bên ngoài và chỉ sử dụng 'union' trong truy vấn bên trong. Tôi không thể thấy hai loại. –