难题?

kkk444dsfsa 2011-10-06 04:43:01
其中有三列
df xj qk
100 0 0
0 200 0
0 0 300

想得到的就结果为:
如果A 不为0 就显示到付
如果B 不为0 就显示现金
如果C 不为0 就显示欠款
...全文
91 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 twtxrjso 的回复:]
geniuswjt 的可行
[/Quote]如果他的可行,不就是我二楼的写法?
-狙击手- 2011-10-06
  • 打赏
  • 举报
回复
select case when df != 0 then '到付'
when xj != 0 then '现金'
when qk != 0 then '欠款' else '0' end
from ta

....
kkk444dsfsa 2011-10-06
  • 打赏
  • 举报
回复
geniuswjt 的可行
geniuswjt 2011-10-06
  • 打赏
  • 举报
回复

--如果一定要用这个不合理的表,如下:

--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (df int,xj int,qk int)
insert into [tb]
select 100,0,0 union all
select 0,200,0 union all
select 0,0,300

--开始查询
select
case
when df <> 0 then '到付'
when xj <> 0 then '现金'
when qk <> 0 then '欠款'
else ''
end
from tb

--结束查询
drop table [tb]

/*
----
到付
现金
欠款

(3 行受影响)
[Quote=引用 4 楼 twtxrjso 的回复:]
比如 现金不为0 付款方式就只显示现金
欠款不为0 付款方式就只显示欠款
到付不为0 付款方式就只显示到付
[/Quote]
dawugui 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 twtxrjso 的回复:]
比如 现金不为0 付款方式就只显示现金
欠款不为0 付款方式就只显示欠款
到付不为0 付款方式就只显示到付
[/Quote]

建议你提供详细的资料:
例如表的结构,表之间的关系,测试数据,相关算法及需要的结果。
这样有助于我们理解你的意思,更主要的是能尽快让你获得答案或解决问题的方法。

-狙击手- 2011-10-06
  • 打赏
  • 举报
回复
select case when df != 0 then '到付'
when xj != 0 then '现金'
when xj != 0 then '现金' else '0' end
from ta
geniuswjt 2011-10-06
  • 打赏
  • 举报
回复
那照你这么说,这3列每行最多1个不为0的咯。
那你这样设计表不合理,不如2个字段,1个金额,1个付款方式(到付、欠款、现金)[Quote=引用 3 楼 twtxrjso 的回复:]
这样子 是显示三列

欠款
欠款
欠款
到付
欠款
到付
现金
欠款
欠款
欠款
到付
欠款
欠款
欠款
到付
现金


我是只要显示一列就好了

如下
付款方式
到付
欠款
现金
[/Quote]
kkk444dsfsa 2011-10-06
  • 打赏
  • 举报
回复
比如 现金不为0 付款方式就只显示现金
欠款不为0 付款方式就只显示欠款
到付不为0 付款方式就只显示到付
kkk444dsfsa 2011-10-06
  • 打赏
  • 举报
回复
这样子 是显示三列

欠款
欠款
欠款
到付
欠款
到付
现金
欠款
欠款
欠款
到付
欠款
欠款
欠款
到付
现金


我是只要显示一列就好了

如下
付款方式
到付
欠款
现金
dawugui 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 twtxrjso 的回复:]
其中有三列
df xj qk
100 0 0
0 200 0
0 0 300

想得到的就结果为:
如果A 不为0 就显示到付
如果B 不为0 就显示现金
如果C 不为0 就显示欠款
[/Quote]
select case when a <> 0 then '到付' else '' end,
case when b <> 0 then '现金' else '' end,
case when c <> 0 then '欠款' else '' end
from tb
-狙击手- 2011-10-06
  • 打赏
  • 举报
回复
select case when df = 0 then '0' else '到付' end as df,
case when xj = 0 then '0' else '现金' end as xj
from ta

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧