3

私が直面していることに対する迅速な解決策を見つけることができないことに少し驚いています。それは対処するのが一般的なことのようです。選択クエリの末尾のスペースを削除できません。データを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

等々。テイカーはいますか?いつものように事前に感謝します。

4

3 に答える 3

2

p.SymbolはCHAR(8)として定義されており、CHAR値はトリミングできません。トリミングする前にN/VARCHAR(8)に変換します。

于 2012-09-17T06:17:38.103 に答える
0

symbol期待される結果から、すべての行の値を1つのコンマ区切りの文字列に連結する必要があるようです。

それをするために、あなたはこれをすることができます:-

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テーブルの列のデータ型を明確にできますか?

于 2012-09-17T02:32:31.390 に答える
0

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
于 2012-09-17T06:00:00.510 に答える