我有这样的查询
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
for CA
输出将是这样的
1111年王,J 34444 抱歉这令人困惑 感谢答案 0 :(得分:1)
我想,状态是告诉你是否希望你的fName和Lname为不同的列或同一列的条件,对吗?
问题是,只要你拥有你在你的小组选择中使用的所有字段,就可以了。您的案例的秘密在于,当您拥有Fname和Lname togheter时,您将需要一个空列,一个带有CASE的列和一个带有oposite 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