我嘗試使用SQL Server 2000中的GROUP_CONCAT
功能,但它返回一個錯誤:SQL Server 2000中相當於GROUP_CONCAT功能
'group_concat' is not a recognized function name"
所以我想有一個其他功能在SQL Server 2000 group_concat
?你能告訴我它是什麼嗎?
我嘗試使用SQL Server 2000中的GROUP_CONCAT
功能,但它返回一個錯誤:SQL Server 2000中相當於GROUP_CONCAT功能
'group_concat' is not a recognized function name"
所以我想有一個其他功能在SQL Server 2000 group_concat
?你能告訴我它是什麼嗎?
不幸的是,由於您使用的是SQL Server 2000,因此不能使用FOR XML PATH
將值連接在一起。
比方說,我們有下面的示例數據:
CREATE TABLE yourtable ([id] int, [name] varchar(4));
INSERT INTO yourtable ([id], [name])
VALUES (1, 'John'), (1, 'Jim'),
(2, 'Bob'), (3, 'Jane'), (3, 'Bill'), (4, 'Test'), (4, '');
一個你可以生成列表在一起的辦法是create a function。樣本函數是:
CREATE FUNCTION dbo.List
(
@id int
)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @r VARCHAR(8000)
SELECT @r = ISNULL(@r+', ', '') + name
FROM dbo.yourtable
WHERE id = @id
and Name > '' -- add filter if you think you will have empty strings
RETURN @r
END
然後,當您查詢數據,您將通過一個值的函數將數據連接成單行:
select distinct id, dbo.list(id) Names
from yourtable;
見SQL Fiddle with Demo。這給你一個結果:
| ID | NAMES |
-------------------
| 1 | John, Jim |
| 2 | Bob |
| 3 | Jane, Bill |
| 4 | Test |
您應該爲Name>''添加另一個where子句條件。這將保護您免受空值和空字符串的影響,這會使輸出不正確或者很奇怪。 –
@Gastros Yup,忘了那個。更新,謝謝! – Taryn
你的意思是mysql中的「你的SQL」因爲這不是真正的標籤。 – Zane