求一sql

dxb_828 2009-09-19 09:20:08
有两个数据表
楼号表build(bid,no)
01 1#
02 2#
楼层表floor(fid,fno,type1)
0101 1层 1
0102 2层 1
0201 1层 1
0202 2层 2
楼层表id的前两位对应楼号表的id,type1为每层楼的类别1是男宿舍,2是女宿舍,能否用一条sql语句写出每栋楼的类别,即如果全为1就是男宿舍全为2就是女宿舍如果既有1又有2就是混合宿舍
...全文
73 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangCK 2009-09-19
  • 打赏
  • 举报
回复
?
zs621 2009-09-19
  • 打赏
  • 举报
回复
3楼的怎么看不到?????????
zs621 2009-09-19
  • 打赏
  • 举报
回复
...........
华夏小卒 2009-09-19
  • 打赏
  • 举报
回复
..
liangCK 2009-09-19
  • 打赏
  • 举报
回复
-------------------------------------
-- Author : liangCK 梁爱兰
-- Comment: 小梁 爱 兰儿
-- Date : 2009-09-19 09:28:33
-------------------------------------

--> 生成测试数据: @build
DECLARE @build TABLE (bid VARCHAR(2),no VARCHAR(2))
INSERT INTO @build
SELECT '01','1#' UNION ALL
SELECT '02','2#'

--> 生成测试数据: @floor
DECLARE @floor TABLE (fid VARCHAR(4),fno VARCHAR(3),type1 INT)
INSERT INTO @floor
SELECT '0101','1层',1 UNION ALL
SELECT '0102','2层',1 UNION ALL
SELECT '0201','1层',1 UNION ALL
SELECT '0202','2层',2

--SQL查询如下:

SELECT
*,
宿舍类别 = CASE WHEN NOT EXISTS(SELECT * FROM @floor
WHERE LEFT(fid,2)=A.bid AND type1 = 1)
THEN '全女生'
WHEN NOT EXISTS(SELECT * FROM @floor
WHERE LEFT(fid,2)=A.bid AND type1 = 2)
THEN '全男生'
ELSE '混合'
END
FROM @build AS A

/*
bid no 宿舍类别
---- ---- ------
01 1# 全男生
02 2# 混合

(2 行受影响)


*/

27,579

社区成员

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

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