我有点惊讶的是,我无法找到一个快速的解决方案是什么我要对付的,好像它会是对付常见的事。 我不能在我的选择查询摆脱尾随空格。 我想将数据放在一个CSV文件。 我很高兴地复制/粘贴SSMS结果“结果到文本”如果这是更容易。 无论哪种方式,我的查询是:
declare @maxDate date = (select MAX(TradeDate) from tblDailyPricingAndVol)
select p.Symbol, ','
from tblDailyPricingAndVol p
where p.Volume > 1000000 and p.Clse <= 40 and p.TradeDate = @maxDate
order by p.Symbol
并返回:
A ,
AA ,
ABB ,
围绕p.Symbol场等RTRIM没有帮助。 如果我能找出最佳的解决方案,我有结果:
A,AA,ABB
等等。 任何考生? 在此先感谢一如既往..
从你期望的结果,似乎要连接的symbol
从所有行到一个逗号demimited字符串值。
为了做到这一点,你可以这样做: -
DECLARE @str VARCHAR(MAX)
SELECT @str = COALESCE(@str+',' ,'') + LTRIM(RTRIM((p.Symbol)))
FROM tblDailyPricingAndVol p
WHERE p.Volume > 1000000 and p.Clse <= 40 and p.TradeDate = @maxDate
ORDER by p.Symbol
SELECT @str
GO
另外的替代性方法还可以参考在这里
关于与您的问题RTRIM
不工作,这似乎很奇怪。 为了安全起见,我添加了LTRIM + RTRIM
上述查询。 但是,只要你的symbol
列是某种varchar
,我们实在没有理由RTRIM
到不行。
你能澄清的数据类型symbol
列在表中?
p.Symbol
被定义为CHAR(8),和CHAR值不能被修整。 修整之前转换为N / VARCHAR(8)。
由于使用的是SQL Server 2008中,你可以这样做:
SELECT STUFF((SELECT ', ' + rtrim(p.Symbol)
from tblDailyPricingAndVol p FOR XML PATH('')),1,2,'') as Symbol
WHERE p.Volume > 1000000
AND p.Clse <= 40
AND p.TradeDate = @maxDate
ORDER BY p.Symbol