SQL 多条件编写

李武医 2014-04-27 09:35:23
表结构是这样的:
ID SetupID   ML  MH  tc25  tc90
1 1 5.2 6.2 7.1 6.7
1 2 2.2 2.5 9.2 2.3
1 1 4.1 7.3 4.6 1.7
1 3 2.7 4.1 2.9 8.5
1 2 5.3 9.2 6.7 9.2

现在需求是 根据根据字段SetupId分组显示
当SetupID等于1时,显示字段 ML MH tc25 tc90中的值
当SetupID等于2时, 显示字段 ML MH 的值,tc25 tc90只显示字段不显示值
当SetupID等于3时,显示字段tc90的值,ML MH tc25只显示字段不显示值
请问怎样写???
我现在是这样写的 正能区分出,当SetupID等于1和2的时候,当等于3时不行。

SELECT
CASE SETUPID WHEN '1' THEN [ML] ELSE 0 END AS lbml,
CASE SETUPID WHEN '1' THEN [MH] ELSE 0 END AS lbmh,
CASE SETUPID WHEN '1' THEN tc25 ELSE 0 END AS lbtc25,
CASE SETUPID WHEN '1' THEN tc90 ELSE 0 END AS lbtc90,

CASE SETUPID WHEN '1' THEN [ML] ELSE 0 END AS mnml,
CASE SETUPID WHEN '1' THEN [MH] ELSE 0 END AS mnmh,

CASE SETUPID WHEN '1' THEN [tc10] ELSE 0 END AS jstc10
FROM dbo.testdata
...全文
150 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Devil月哥 2014-04-27
  • 打赏
  • 举报
回复
执行结果
Devil月哥 2014-04-27
  • 打赏
  • 举报
回复
我这里是吧你不显示的血的null,你数字字段就把我这个的null改为0
Devil月哥 2014-04-27
  • 打赏
  • 举报
回复
SELECT dbo.demo.SetipID AS SetipID,
--处理ML 这个是ID为1,2,3都显示,有点多余,不过帮你理解
CASE dbo.demo.SetipID
WHEN '1' THEN ML
WHEN '2' THEN ML
WHEN '3' THEN ML
END
AS lbml,
--MH只在ID1,2显示
CASE dbo.demo.SetipID
WHEN '1' THEN MH
WHEN '2' THEN MH
WHEN '3' THEN NULL
END
AS lbmh,
--tc25只在ID1显示
CASE dbo.demo.SetipID
WHEN '1' THEN tc25
WHEN '2' THEN NULL
WHEN '3' THEN NULL
END
AS lbtc25,
--tc90只在ID1显示
CASE dbo.demo.SetipID
WHEN '1' THEN tc90
WHEN '2' THEN NULL
WHEN '3' THEN NULL
END
AS lbtc90
FROM
	dbo.demo
李武医 2014-04-27
  • 打赏
  • 举报
回复
引用 4 楼 zijiang001 的回复:
都是when '1',没看到 when '3'
1 2 3 我是传入的
zijiang001 2014-04-27
  • 打赏
  • 举报
回复
都是when '1',没看到 when '3'
李武医 2014-04-27
  • 打赏
  • 举报
回复
引用 2 楼 yoan2014 的回复:
把你要的结果贴出来

这样的结果,

yoan2014 2014-04-27
  • 打赏
  • 举报
回复
把你要的结果贴出来
李武医 2014-04-27
  • 打赏
  • 举报
回复
自己顶!!!!

22,210

社区成员

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

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