31

SSRS 2008 のパラメーター ボックスにデータを入力するために使用したい顧客テーブルがありcust_numます。テーブルの必須フィールドは次のとおりです。cust_namecust_addr

cust_num     int            PK
cust_name    char(50)       not null
cust_addr    char(50)

SQL は次のとおりです。

select cust_num, cust_name + isnull(cust_addr, '') address
from customers

これにより、パラメーターリストに次のように表示されます。

FIRST OUTPUT - ACTUAL
1       cust1              addr1
2       customer2               addr2

これは私が期待したものですが、私が欲しいのは:

SECOND OUTPUT - DESIRED
1       cust1              addr1
2       customer2          addr2

私が試したこと:

select cust_num, rtrim(cust_name) + space(60 - len(cust_name)) +
                 rtrim(cust_addr) + space(60 - len(cust_addr)) customer
from customers

これにより、最初の出力が得られます。

select cust_num, rtrim(cust_name) + replicate(char(32), 60 - len(cust_name)) +
                 rtrim(cust_addr) + replicate(char(32), 60 - len(cust_addr)) customer

これにより、最初の出力も得られます。

私もその逆に置き換えspace()てみましたchar(32)

substring、 、のバリエーションを試しましたがleftrightすべて役に立ちませんでした。

私もいろいろなところで使っていltrimますrtrim

60 の理由は、両方のフィールドの最大長を確認したところ、50 であり、フィールドが最大化されていてもフィールド間に空白が必要なためです。都市、州、および郵便番号は別のフィールドにあるため、切り捨てられたデータについてはあまり心配していません。番地の末尾が切り落とされていれば問題ないと思います。

これはショー ストッパーではありません。SSRS レポートは現在、最初の出力で展開されていますが、できればよりクリーンにしたいと考えています。

4

5 に答える 5

80

Whammo blammo (先行スペース用):

SELECT 
    RIGHT(space(60) + cust_name, 60),
    RIGHT(space(60) + cust_address, 60)

OR (末尾のスペース)

SELECT
    LEFT(cust_name + space(60), 60),
    LEFT(cust_address + space(60), 60),
于 2012-09-19T19:20:20.167 に答える