一个表中的两个字段,关联另一个表中的一个字段,求查询解决

米修Baby 2013-08-29 01:30:01
Select TB_ICKaBiao.ID,TB_ICKaBiao.ICKaHao,TB_ICKaBiao.ICKaLeiXing,TB_ICKaBiao.ICKaZhiKaRiQi,
ICKaZhuangTai,TB_ICKaBiao.Remark ,dbo.TB_SheDingShuJuBiao.Shedingshuju as ickl,TB_SheDingShuJuBiao.Shedingshuju as zhuangt

From TB_ICKaBiao,TB_SheDingShuJuBiao

Where TB_ICKaBiao.ICKaLeiXing=TB_SheDingShuJuBiao.ID or TB_ICKaBiao.ICKaZhuangTai=TB_SheDingShuJuBiao.ID


查询结果是两条,求合并成一条!
1 B001 252 2012-01-01 00:00:00.000 254 NULL 固定卡 固定卡
1 B001 252 2012-01-01 00:00:00.000 254 NULL 空置 空置
...全文
714 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangbo4235 2013-09-03
  • 打赏
  • 举报
回复
上面那位大侠代码改进下就可以了
SELECT a.ID,a.ICKaHao,a.ICKaLeiXing,a.ICKaZhiKaRiQi,a.ICKaZhuangTai,a.Remark , b.Shedingshuju AS ickl ,b.Shedingshuju AS zhuangt
FROM TB_ICKaBiao a CROSS APPLY (
SELECT TOP(1) *
FROM TB_SheDingShuJuBiao m
WHERE (m.ID =a.ICKaLeiXing OR m.ID = a.ICKaZhuangTai) and m.Shedingshuju<>a.Shedingshuju and m.Shedingshuju<>a.Shedingshuju
ORDER BY (CASE WHEN m.ID = a.ICKaLeiXing THEN 0 ELSE 1 END)
) b
Shawn 2013-08-29
  • 打赏
  • 举报
回复
引用 2 楼 lvxiaowei0516 的回复:
你好,查询出结果是一条,但是ickl和zhuangt相同了, ickl是上面的252 在TB_SheDingShuJuBiao中对应表ID zhuangt是上面的254对应TB_SheDingShuJuBiao中的id
给数据和你想要的结果。
唐诗三百首 2013-08-29
  • 打赏
  • 举报
回复
请问LZ想要的合并成一条的结果是什么? 这样的吗? 1 B001 252 2012-01-01 00:00:00.000 254 NULL 固定卡,固定卡 空置,空置
米修Baby 2013-08-29
  • 打赏
  • 举报
回复
引用 1 楼 wwwwgou 的回复:
SELECT
	a.ID ,
	a.ICKaHao ,
	a.ICKaLeiXing ,
	a.ICKaZhiKaRiQi ,
	a.ICKaZhuangTai ,
	a.Remark ,
	b.Shedingshuju AS ickl ,
	b.Shedingshuju AS zhuangt
FROM TB_ICKaBiao a
CROSS APPLY
(
	SELECT TOP(1) * FROM TB_SheDingShuJuBiao m 
	WHERE m.ID = a.ICKaLeiXing OR m.ID = a.ICKaZhuangTai
	ORDER BY (CASE WHEN m.ID = a.ICKaLeiXing THEN 0 ELSE 1 END)
) b
你好,查询出结果是一条,但是ickl和zhuangt相同了, ickl是上面的252 在TB_SheDingShuJuBiao中对应表ID zhuangt是上面的254对应TB_SheDingShuJuBiao中的id
Shawn 2013-08-29
  • 打赏
  • 举报
回复
SELECT
	a.ID ,
	a.ICKaHao ,
	a.ICKaLeiXing ,
	a.ICKaZhiKaRiQi ,
	a.ICKaZhuangTai ,
	a.Remark ,
	b.Shedingshuju AS ickl ,
	b.Shedingshuju AS zhuangt
FROM TB_ICKaBiao a
CROSS APPLY
(
	SELECT TOP(1) * FROM TB_SheDingShuJuBiao m 
	WHERE m.ID = a.ICKaLeiXing OR m.ID = a.ICKaZhuangTai
	ORDER BY (CASE WHEN m.ID = a.ICKaLeiXing THEN 0 ELSE 1 END)
) b

22,209

社区成员

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

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