case end 别名

qrealiny 2008-10-27 04:37:32
SELECT a.*, b.usergroupname_3 AS usergroupname_, a.usernm_3 AS usernm_,
CASE
WHEN a.usertype = '1'
THEN (SELECT companyshortnm_3 FROM companymst WHERE companymst.companycd =a.companycd)
WHEN a.usertype = '2'
THEN (SELECT customershortnm_3 FROM customermst WHERE customermst.customercd =a.companycd)
END AS companyshortnm_
FROM usermst a LEFT JOIN usergroupmst b ON a.usergroupid = b.usergroupid
WHERE a.companycd IS NOT NULL
AND a.usertype = '1'
AND a.companycd LIKE '%SHDLDSJ%'
--AND a.companyshortnm_ like '%支所4%' 此行为什么说无效的标识符呢,我在end 的后面不是指定别名为companyshortnm_了么

难道不可以这么用么
...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
StrutHibernate 2008-10-27
  • 打赏
  • 举报
回复
不过即使改为上面的,你的语句仍然不对.你这个语句得使用判断语句或动态SQL来完成.
李冬宝 2008-10-27
  • 打赏
  • 举报
回复

确实不能这样用。
因为你的别名是在输出的结果集中,而不是表a
等不到来世 2008-10-27
  • 打赏
  • 举报
回复
select * from
(
SELECT a.*, b.usergroupname_3 AS usergroupname_, a.usernm_3 AS usernm_,
CASE
WHEN a.usertype = '1'
THEN (SELECT companyshortnm_3 FROM companymst WHERE companymst.companycd =a.companycd)
WHEN a.usertype = '2'
THEN (SELECT customershortnm_3 FROM customermst WHERE customermst.customercd =a.companycd)
END AS companyshortnm_
FROM usermst a LEFT JOIN usergroupmst b ON a.usergroupid = b.usergroupid
WHERE a.companycd IS NOT NULL
AND a.usertype = '1'
AND a.companycd LIKE '%SHDLDSJ%'
) t
where companyshortnm_ like '%支所4%'
dawugui 2008-10-27
  • 打赏
  • 举报
回复
不过即使改为上面的,你的语句然后不对.你这个语句得使用判断语句或动态SQL来完成.
csdyyr 2008-10-27
  • 打赏
  • 举报
回复

SELECT * FROM (
SELECT a.*, b.usergroupname_3 AS usergroupname_, a.usernm_3 AS usernm_,
CASE
WHEN a.usertype = '1'
THEN (SELECT companyshortnm_3 FROM companymst WHERE companymst.companycd =a.companycd)
WHEN a.usertype = '2'
THEN (SELECT customershortnm_3 FROM customermst WHERE customermst.customercd =a.companycd)
END AS companyshortnm_
FROM usermst a LEFT JOIN usergroupmst b ON a.usergroupid = b.usergroupid
WHERE a.companycd IS NOT NULL
AND a.usertype = '1'
AND a.companycd LIKE '%SHDLDSJ%'
--AND a.companyshortnm_ like '%支所4%'
) WHERE companyshortnm_ like '%支所4%'
pt1314917 2008-10-27
  • 打赏
  • 举报
回复
select * from
(SELECT a.*, b.usergroupname_3 AS usergroupname_, a.usernm_3 AS usernm_,
CASE
WHEN a.usertype = '1'
THEN (SELECT companyshortnm_3 FROM companymst WHERE companymst.companycd =a.companycd)
WHEN a.usertype = '2'
THEN (SELECT customershortnm_3 FROM customermst WHERE customermst.customercd =a.companycd)
END AS [companyshortnm_]
FROM usermst a LEFT JOIN usergroupmst b ON a.usergroupid = b.usergroupid
WHERE a.companycd IS NOT NULL
AND a.usertype = '1'
AND a.companycd LIKE '%SHDLDSJ%')a
where [companyshortnm_] like '%支所4%'
dawugui 2008-10-27
  • 打赏
  • 举报
回复
改为companyshortnm_ like '%支所4%'

22,210

社区成员

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

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