这样的结果怎么得到

by_封爱 2012-02-02 01:48:16
table1
方剂代码 方剂名称 药物列表
D1 方名1 药1,药2,药3,药4,药5
D2 方名1 药1,药2,药4
D3 方名2 药1,药2,药3,药4,药5
D4 方名4 药1,药2,药3,药4,药5
D5 方名5 药1,药3
.....

要找出2个结果
表格式如下:
方剂名称 药物列表

第一种是:
方剂名称相同,但是药物列表不同的

第二种是:
方剂名称不同,但是药物列表相同的

...全文
72 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
勿勿 2012-02-02
  • 打赏
  • 举报
回复
--table1
--方剂代码 方剂名称 药物列表
--D1 方名1 药1,药2,药3,药4,药5
--D2 方名1 药1,药2,药4
--D3 方名2 药1,药2,药3,药4,药5
--D4 方名4 药1,药2,药3,药4,药5
--D5 方名5 药1,药3
--.....



if OBJECT_ID('tb') is not null
drop table tb
go
create table tb(方剂代码 varchar(50),方剂名称 varchar(50),药物列表 varchar(50))
insert into tb
select 'D1', '方名1' ,'药1,药2,药3,药4,药5' union all
select 'D2', '方名1', '药1,药2,药4' union all
select 'D3', '方名2', '药1,药2,药3,药4,药5' union all
select 'D4', '方名4', '药1,药2,药3,药4,药5' union all
select 'D5', '方名5', '药1,药3'

--要找出2个结果
--表格式如下:
--方剂名称 药物列表

--第一种是:
--方剂名称相同,但是药物列表不同的

select t.方剂名称,t.药物列表 from tb b left join (select * from tb )t on b.方剂名称=t.方剂名称
and b.方剂代码<>t.方剂代码 where b.药物列表<>t.药物列表

--方剂名称 药物列表
---------------------------------------------------- --------------------------------------------------
--方名1 药1,药2,药3,药4,药5
--方名1 药1,药2,药4

--(2 行受影响)

--第二种是:
--方剂名称不同,但是药物列表相同的
select distinct(t.方剂名称),t.药物列表 from tb b left join (select * from tb )t on b.药物列表=t.药物列表
and b.方剂代码<>t.方剂代码 where b.方剂名称<>t.方剂名称
--方剂名称 药物列表
---------------------------------------------------- --------------------------------------------------
--方名1 药1,药2,药3,药4,药5
--方名2 药1,药2,药3,药4,药5
--方名4 药1,药2,药3,药4,药5

--(3 行受影响)
sdbtongtong 2012-02-02
  • 打赏
  • 举报
回复
select fjmc,ywlbfrom table1 as a where(select COUNT(1) from table1 b where b.fjmc=a.fjmc)>1 and (select COUNT(1) from table1 as b where b.ywlbfrom =a.ywlbfrom )<1
by_封爱 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 maco_wang 的回复:]
SQL code

declare @table1 table (方剂代码 varchar(2),方剂名称 varchar(5),药物列表 varchar(30))
insert into @table1
select 'D1','方名1','药1,药2,药3,药4,药5' union all
select 'D2','方名1','药1,药2,药4' union all
select ……
[/Quote]
这样把方名相同,药名相同的也包含进去了
kingtiy 2012-02-02
  • 打赏
  • 举报
回复
select  a.方剂名称,a.药物列表
from tb a,tb b
where a.方剂名称<>b.方剂名称 and a.药物列表=b.药物列表
Walton_Yan 2012-02-02
  • 打赏
  • 举报
回复

select * from A a where exists(select * from A ,a where A.方剂名称=a.方剂名称 and a.药物列表<>b.药物列表)

select * from A a where exists(select * from A ,a where A.方剂名称<>a.方剂名称 and a.药物列表=b.药物列表)


kingtiy 2012-02-02
  • 打赏
  • 举报
回复
select  a.方剂名称,a.药物列表
from tb a,tb b
where a.方剂名称=b.方剂名称 and a.药物列表<>b.药物列表
叶子 2012-02-02
  • 打赏
  • 举报
回复

declare @table1 table (方剂代码 varchar(2),方剂名称 varchar(5),药物列表 varchar(30))
insert into @table1
select 'D1','方名1','药1,药2,药3,药4,药5' union all
select 'D2','方名1','药1,药2,药4' union all
select 'D3','方名2','药1,药2,药3,药4,药5' union all
select 'D4','方名4','药1,药2,药3,药4,药5' union all
select 'D5','方名5','药1,药3'

--1\
select 方剂名称,药物列表 from @table1 where 方剂名称 in(
select 方剂名称 from @table1 group by 方剂名称 having(count(1)>1))

/*
方剂名称 药物列表
----- ------------------------------
方名1 药1,药2,药3,药4,药5
方名1 药1,药2,药4
*/

--2\
select 方剂名称,药物列表 from @table1 where 药物列表 in(
select 药物列表 from @table1 group by 药物列表 having(count(1)>1))
/*
方剂名称 药物列表
----- ------------------------------
方名1 药1,药2,药3,药4,药5
方名2 药1,药2,药3,药4,药5
方名4 药1,药2,药3,药4,药5
*/
勿勿 2012-02-02
  • 打赏
  • 举报
回复
where 后的条件跟着变下。

22,209

社区成员

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

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