日期:2014-05-18  浏览次数:20376 次

根据bit数据显示不同内容
我有个表里的字段是bit型,想在select查询语句中,当这个字段的内容是‘0’时,显示空值,是‘1’时显示“作废”,好像应该用子查询吧,但搞了半天老是出错,想上来请教各位老师。
select rkdjh,rksj,czyname,(if (select quit from rkd)=1 AS '作废' else ''from kc)作废标志 from kc


我在我写的C/S系统里用了4个触发器:都是对库存表进行操作的,入库、入库退单、销售、销售退单各一个,都对库存表产生影响,我嫌在前台实现麻烦,就都用触发器了,这样在两台工作站同时工作时,尤其是一台做入库,另一台做销售,或是两台同时做销售,会不会把数据搞错。

------解决方案--------------------
你这个quit是哪个表里的?怎么会有个rkd,如果它是rkd表里的话,要与kc表相关联.
假设kc表与rkd表的关联字段名为rkdjh:
SQL code
select rkdjh,rksj,czyname,(case when exists(select 1 from rkd where quit=1 and rkdjh=a.rkdjh) then '作废' else '' end) 作废标志 from kc a

------解决方案--------------------
SQL code
select rkdjh,rksj,czyname,(case when quit=1 then '作废' when quit=0 then '' end) 作废标志 from rkd

------解决方案--------------------
SQL code

select rkdjh,rksj,czyname,
(case when quit=1 then '作废' when quit=0 then '' end) 作废标志,
(case when zfsj is not NULL else '' end) 作废时间 from rkd
/*
判断是否为null要用is null和is not null,另外case when是可以用else的,没必要一直then
老大,你这个数据库掌握程度我很担心你用触发器诶,坑爹啊。。。

------解决方案--------------------
SQL code

--你的整个需求应该这么写,关联条件按你的2个表自己改
select rkdjh,rksj,czyname,
(case when quit=1 then '作废' else '' end) 作废标志,
(case when zfsj is null then '' else zfsj end) 作废时间 
from rkd a join sale b
on (a.关联条件=b.关联条件)
where b.xstime between @c and @d