表中实际不存在某个字段,但是在查询的时候,能否虚拟的增加一个字段呢?

macsales 2009-01-12 10:38:52
表中实际不存在某个字段,但是在查询的时候,能否虚拟的增加一个字段呢?

例如:

码数基本表
35码
36码

产品 码数
A 35码
B 36码

需要的结果
产品 码数 是否有(0表示无,1表示有)
A 35码 1
A 36码 0
B 35码 0
B 36码 1


...全文
112 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2009-01-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 macsales 的帖子:]
表中实际不存在某个字段,但是在查询的时候,能否虚拟的增加一个字段呢?

例如:

码数基本表
35码
36码

产品 码数
A 35码
B 36码

需要的结果
产品 码数 是否有(0表示无,1表示有)
A 35码 1
A 36码 0
B 35码 0
B 36码 1

[/Quote]

--假设
tb1
id
35码
36码

tb2
name id
A 35码
B 36码


create table tb1(id varchar(10)) 
insert into tb1 values('35码')
insert into tb1 values('36码')
create table tb2(name varchar(10) , id varchar(10))
insert into tb2 values('A' , '35码')
insert into tb2 values('B' , '36码')
go

select m.* , 是否有 = case when exists (select 1 from tb2 n where m.name = n.name and m.id = n.id) then 1 else 0 end from
(select distinct tb2.name , tb1.id from tb2 , tb1 ) m

drop table tb1 , tb2

/*
name id 是否有
---------- ---------- -----------
A 35码 1
A 36码 0
B 35码 0
B 36码 1

(所影响的行数为 4 行)

*/
jinjazz 2009-01-12
  • 打赏
  • 举报
回复
select c,m,max(h) as h from(
select a.c,b.m,case when a.m=b.m then 1 else 0 end as h from(
select 'A'as c,'35码' as m union
select 'B','36码' )a ,
(
select '35码' as m union
select '36码')b)t
group by c,m

/*
c m h
---- ---- -----------
A 35码 1
B 35码 0
A 36码 0
B 36码 1

(4 行受影响)*/
rucypli 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiaoku 的回复:]
SQL codeselect a.产品,
b.码数,
case when a.产品 is null then 0 else 1 end 是否有
from 码数基本表 b full join 产品 a on b.码数 = a.码数

-- 大概case when 就是你想要的...
[/Quote].
dovei 2009-01-12
  • 打赏
  • 举报
回复
肯定可以、、不过我现在一下想不起来怎么写了、、自个也不熟
xiaoku 2009-01-12
  • 打赏
  • 举报
回复
select a.产品,
b.码数,
case when a.产品 is null then 0 else 1 end 是否有
from 码数基本表 b full join 产品 a on b.码数 = a.码数

-- 大概case when 就是你想要的...

22,206

社区成员

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

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