1

こんな問い合わせがあります

Select SSN, FName, MName, LName, sum(WagesAmt) as WagesAmt, sum(OtherAmt) as OtherAmt
      from #data
      group by SSN, FName, MName, LName
      having sum(WagesAmt) <> 0

他の状態になると、Lastname、Fname、Mname を組み合わせて出力したいと考えています。

次のようなことをする必要がありますか:

declare @result table

set @result = case 
when  then select 
when  then select

私の質問は、さまざまな出力要件を制御するためのケース ステートメントをどのように記述できるかということです。

TXの場合、出力は次のようになります

ssn FNAME, LName, amount 1111 jon WANG 3444

CA用

出力は次のようになります

1111王、J 34444

混乱させてごめんなさいありがとう

4

1 に答える 1

1

State は、fName と Lname を異なる列にするか同じ列にするかを示す条件だと思いますよね?

問題は、グループの選択で使用するすべてのフィールドがある限り、問題ありません。あなたの場合の秘密は、FnameとLnameが一緒にある場合、空の列、CASEのある列、および反対のCASEを持つ2番目の列が必要になることです。

この簡単な例がお役に立てば幸いです。

CREATE table names(
firstName varchar(50),
lastName varchar(50),
condition int,
amount int)

insert into names VALUES('First1', 'Last1', 1, 10)
insert into names VALUES('First1', 'Last1', 1, 10)
insert into names VALUES('First2', 'Last2', 2, 5)
insert into names VALUES('First2', 'Last2', 2, 5)


SELECT 
case 
    when condition=1 then firstname
    else firstname + ' - ' + lastname
    END,
case
    when condition=1 then lastname
    else ''
    END,
sum(amount)
FROM names
group BY firstname, lastname, condition

結果:

Column1                     Column2          Column3
First1                        Last1               20
First2 - Last2                                    10
于 2012-10-19T15:28:37.467 に答える