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, 金额 1111 jon WANG 3444

对于 CA

输出将是这样的

1111 王军 34444

很抱歉造成混淆谢谢

4

1 回答 1

1

我想 State 是一个条件,它会告诉你是否希望你的 fName 和 Lname 作为不同的列或相同的列,对吗?

问题是,只要您在 group by 中选择您使用的所有字段,就可以了。您的案例的秘密是,当您同时拥有 Fname 和 Lname 时,您将需要一个空列,一个带有 CASE 的列,第二个带有相反 CASE 的列

我希望这个简单的例子可以帮助你:

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 回答