求一条sql语句

xuhaibobishen 2012-11-01 09:16:23
a表结构:
a1 a2 a3 a4
2 3 4 null
4 2 3 1
5 6 7 2
b表结构:
b1 b2 b3 a1
2 1 2 2
3 7 8 4
5 9 2 5
a表b表以a1关联,如果a表中a4不等于null且a1值不等于b表中b1值,则将b3的值赋给a3,如果a4不等于null且a1值等于b表中b1值,由a3值为空。如果a4值等于null,则a3值为a2.查询结果如下:
a1 a2 a3
2 3 3
4 2 8
5 6 null
注意是查询赋值,不更新原表内容,以a3降序排序
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuhaibobishen 2012-11-01
  • 打赏
  • 举报
回复
阿汤哥就是牛逼
xuhaibobishen 2012-11-01
  • 打赏
  • 举报
回复
终于会了,very 感谢,以后就找你拉
汤姆克鲁斯 2012-11-01
  • 打赏
  • 举报
回复
按照你的逻辑 写case when (就是 if elseif...)就行了
汤姆克鲁斯 2012-11-01
  • 打赏
  • 举报
回复
昨天你不是问了一个相似的吗?
怎么不会照着改一下呢

--> 测试数据:#ta
IF OBJECT_ID('TEMPDB.DBO.#ta') IS NOT NULL DROP TABLE #ta
GO
CREATE TABLE #ta([a1] INT,[a2] INT,[a3] INT,[a4] INT)
INSERT #ta
SELECT 2,3,4,NULL UNION ALL
SELECT 4,2,3,1 UNION ALL
SELECT 5,6,7,2

--> 测试数据:#tb
IF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tb
GO
CREATE TABLE #tb([b1] INT,[b2] INT,[b3] INT,[a1] INT)
INSERT #tb
SELECT 2,1,2,2 UNION ALL
SELECT 3,7,8,4 UNION ALL
SELECT 5,9,2,5
--------------开始查询--------------------------

SELECT a.a1,a2,
a3=CASE WHEN a4 IS NOT NULL AND a.a1<>b1 then b3 --如果a表中a4不等于null且a1值不等于b表中b1值,则将b3的值赋给a3
WHEN a4 IS NOT NULL AND a.a1=b1 THEN NULL--如果a4不等于null且a1值等于b表中b1值,由a3值为空。
WHEN a4 IS NULL THEN a2--如果a4值等于null,则a3值为a2
ELSE a3 end

FROM #ta a,#tb b WHERE a.a1=b.a1
----------------结果----------------------------
/*
a1 a2 a3
2 3 3
4 2 8
5 6 NULL
*/

27,579

社区成员

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

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