gpt4 book ai didi

sql - 仅打印最后一个值的自定义订单

转载 作者:行者123 更新时间:2023-12-02 23:33:18 24 4
gpt4 key购买 nike

我有下面的脚本。它只打印出一个值,PLGG 不是全部。

 Pot

ABC
MPOT
NVPN
PLGG

但是,当我删除按案例排序部分时,它会打印所有值。这是为什么?这里不能使用自定义订单吗?

declare @pot nvarchar(max) = ''

select @pot = @pot + QUOTENAME(pot) + ','
from myTbl
group by pot
order by case when pot = 'MPot' then '1'
else pot end

print(@pot)

最佳答案

如果您尝试创建分隔列表,有“更好”的方法。如果您使用的是 2017 年以上版本,则可以使用 STRING_AGG:

CREATE TABLE dbo.myTbl (Pot varchar(4));

INSERT INTO dbo.myTbl (Pot)
VALUES('ABC'),
('MPOT'),
('NVPN'),
('PLGG');
GO
DECLARE @Pot nvarchar(MAX)

SET @Pot = (SELECT STRING_AGG(QUOTENAME(Pot), ',') WITHIN GROUP (ORDER BY CASE WHEN Pot = 'MPot' THEN '1' ELSE Pot END) FROM dbo.myTbl);

PRINT @Pot;

如果您是 2016 年以后的版本,则可以使用 FOR XML PATH:

DECLARE @Pot nvarchar(MAX);

SET @Pot = STUFF((SELECT ',' + QUOTENAME(Pot)
FROM dbo.myTbl
ORDER BY CASE WHEN Pot = 'MPot' THEN '1' ELSE Pot END
FOR XML PATH(N''), TYPE).value('.', 'nvarchar(MAX)'),1,1,'');

关于sql - 仅打印最后一个值的自定义订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58505156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com