求SQL语句,where条件中如何加判断

bluegenius 2010-04-08 06:10:36
画面上有2个非必需输入的输入框,输入的是codeFrom,codeTo

场景1
如果画面的输入框没有输入数据,选出以下数据
SELECT
TABLE.预定接收方code,
CASE
WHEN View.sysCode = 1 THEN
SELECT Table1.kouzaName1, 1 FROM Table1,View WHERE View.code = TABLE.分类 AND View.kubun = 16 AND TABLE.预定接收方code = Table1.kouzaCode1
WHEN View.sysCode = 2 THEN
SELECT Table2.kouzaName2, 2 FROM Table2,View WHERE View.code = TABLE.分类 AND View.kubun = 16 AND TABLE.预定接收方code = Table2.kouzaCode2
ELSE '',''
END AS 预定接受方名称,syscode
FROM TABLE

场景2
如果画面的输入框输入了数据,选出以下数据
SELECT
预定接收方code,
CASE
WHEN View.sysCode = 1 THEN
SELECT Table1.kouzaName1, 1 FROM Table1,View WHERE View.code = TABLE.分类 AND View.kubun = 16 AND TABLE.预定接收方code = Table1.kouzaCode1
WHEN View.sysCode = 2 THEN
SELECT Table2.kouzaName2, 2 FROM Table2,View WHERE View.code = TABLE.分类 AND View.kubun = 16 AND TABLE.预定接收方code = Table2.kouzaCode2
ELSE '',''
END AS 预定接受方名称,syscode
FROM TABLE
WHERE
if LEN(@画面输入codeFrom) >0
BEGIN
SET @SQL = @SQL + ' syscode = 1 AND 预定接收方code >= ' + CHAR(39) +@画面输入codeFrom + CHAR(39) + ' '
END
if LEN(@画面输入codeTo) >0
BEGIN
SET @SQL = @SQL + ' syscode = 1 AND 预定接收方code <= ' + CHAR(39) +@画面输入codeTO + CHAR(39) + ' '
END


不知道这么写对不对。
...全文
1198 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluegenius 2010-04-08
  • 打赏
  • 举报
回复
实际上就是想做到 :
如果画面上输入了codeFrom或codeTo,再过滤一遍结果集,使得只显示syscode=1的数据。
bluegenius 2010-04-08
  • 打赏
  • 举报
回复
Select code,name from tableA

其中name是根据分类和code查询出来的,这时候隐藏了一个字段,就是View的syscode。
如果View的syscode是1,应该从tableB中查询name,
如果View的syscode是2,应该从tableC中查询name。
如果View的syscode是1,2以外的, 设置name为空。

bluegenius 2010-04-08
  • 打赏
  • 举报
回复
用自然语言再详述一遍:

画面上有2个非必需输入的输入框,输入的是codeFrom,codeTo

(1)当这两个输入框都没有输入值的时候,需要查询出所有的数据(syscode 是任意的)
(2)当这两个输入框中有任意一个或二个录入有值的时候,只能查出syscode=1的数据。
htl258_Tony 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 bluegenius 的回复:]
答问哦,这里不是聊天的。
[/Quote]

Sorry,

我把代码反复看了三遍,没理解楼主最终想要实现的结果,真是爱莫能助.
东那个升 2010-04-08
  • 打赏
  • 举报
回复
WHERE 
syscode = 1 AND 预定接收方code between @画面输入codeFrom and @画面输入codeTO and len(ltrim(@画面输入codeFrom)>0 and len(ltrim(@画面输入codeTO)>0
东那个升 2010-04-08
  • 打赏
  • 举报
回复
WHERE 
syscode = 1 AND 预定接收方code between @画面输入codeFrom and @画面输入codeTO
东那个升 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 htl258 的回复:]
引用 5 楼 ws_hgo 的回复:
引用 4 楼 htl258 的回复:
引用 3 楼 ws_hgo 的回复:
引用 2 楼 htl258 的回复:
要改动不少.

TONY你儿子长的有趣啊
哪有趣,很一般啊

好像肚子饿啦
又要吃奶
看你的头像更像要吃奶,不信比比
[/Quote]

你俩嘴型很象,都是吃奶的。还是抽烟好。。。
bluegenius 2010-04-08
  • 打赏
  • 举报
回复
答问哦,这里不是聊天的。
htl258_Tony 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ws_hgo 的回复:]
引用 4 楼 htl258 的回复:
引用 3 楼 ws_hgo 的回复:
引用 2 楼 htl258 的回复:
要改动不少.

TONY你儿子长的有趣啊
哪有趣,很一般啊

好像肚子饿啦
又要吃奶
[/Quote]看你的头像更像要吃奶,不信比比
ws_hgo 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 htl258 的回复:]
引用 3 楼 ws_hgo 的回复:
引用 2 楼 htl258 的回复:
要改动不少.

TONY你儿子长的有趣啊
哪有趣,很一般啊
[/Quote]
好像肚子饿啦
又要吃奶
htl258_Tony 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ws_hgo 的回复:]
引用 2 楼 htl258 的回复:
要改动不少.

TONY你儿子长的有趣啊
[/Quote]哪有趣,很一般啊
ws_hgo 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 htl258 的回复:]
要改动不少.
[/Quote]
TONY你儿子长的有趣啊
htl258_Tony 2010-04-08
  • 打赏
  • 举报
回复
要改动不少.
ws_hgo 2010-04-08
  • 打赏
  • 举报
回复
好长啊

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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