请教一个查询语句

Accelerator 2007-02-09 12:49:53
Access

有表A,内容如下:

ID 类型 名称
1 A name1
2 B name2
3 A name3
4 B name4
.......

想要一个查询,得到下面的结果:
类型 名称 根 ID
A YES
name1 NO 1
name3 NO 3
B YES
name2 NO 2
name4 NO 4
......

谢谢
...全文
400 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
w75251455 2007-02-09
  • 打赏
  • 举报
回复
我最喜欢听的一句话是~~~
"w75251455(砍破)高手"
~~~哈哈哈
hbqc_zh 2007-02-09
  • 打赏
  • 举报
回复
楼上几位写得好啊
w75251455 2007-02-09
  • 打赏
  • 举报
回复
to:rookie_one(流氓会武术,谁都挡不住)
多多相我学习~~~哇哈哈
w75251455 2007-02-09
  • 打赏
  • 举报
回复

create table A(ID int, 类型 varchar(10), 名称 varchar(15))
insert A select 1, 'A', 'name1'
union all select 2, 'B', 'name2'
union all select 3, 'A', 'name3'
union all select 4, 'B', 'name4'

--总是最牛的
select isnull(b.类型,'')类型,isnull(a.名称,'')名称,
(case when b.类型 is not null then 'YES' else 'NO' end)根,
isnull(RTRIM (cast(a.id as char(5))),'')ID
from a full join (select 类型,ID=0 from a group by 类型)b on a.ID=b.ID
order by isnull(b.类型,a.类型),isnull(b.id,a.id)

/*
类型 名称 根 ID
A YES
name1 NO 1
name3 NO 3
B YES
name2 NO 2
name4 NO 4
*/
rookie_one 2007-02-09
  • 打赏
  • 举报
回复
目前就想出这么两种情况

环境:
create table #temp
(ID int,
类型 varchar(10),
名称 varchar(50)
)
insert into #temp
select '1','A','name1' union all select '2','B','name2' union all select '3','A','name3' union all select '4','B','name4'
select * from #temp


方法1:
select 类型,名称,根,isnull(cast(ID as varchar(10)),'' ) ID from
(
select distinct 类型,'' 名称,'YES' 根,null ID from 表
union all
select 类型,名称,'NO' 根,ID from 表
)y
order by 类型,名称
----------------------------

类型 名称 根 ID
A YES
A name1 NO 1
A name3 NO 3
B YES
A name2 NO 2
A name4 NO 4

这样没有解决类型相应的空值


方法2:(这个办法比较笨,但是能得到正确结果)
<step 1>--建立一个有新建的自增ID列的表#tt
select identity(int,1,1) as idid ,* into #tt from
(
select top 100 percent 类型,名称,根,isnull(cast(ID as varchar(10)),'' ) ID from
(
select distinct 类型,'' 名称,'YES' 根,null ID from #temp
union all
select 类型,名称,'NO' 根,ID from #temp
)y
order by 类型,名称
)t

<step2>--从#tt里查询结果
select 类型,名称,根,ID from
(
select idid,'' 类型,名称,根,ID from #tt where 名称<>''
union all
select idid,类型,名称,根,ID from #tt where 名称=''
) x
order by idid


------
类型 名称 根 ID
A YES
name1 NO 1
name3 NO 3
B YES
name2 NO 2
name4 NO 4
hrb2008 2007-02-09
  • 打赏
  • 举报
回复
SELECT 类型名,名称,根,ID FROM (
SELECT distinct 类型,'' as 名称,'YES' as 根,null as ID,类型 as 排序 from A
UNION ALL
select '' as 类型,名称,'NO' as 根,ID,类型 as 排序 from A
)
ORDER BY 排序,ID
leohuang 2007-02-09
  • 打赏
  • 举报
回复
select 类型名,名称,根,id from (
SELECT distinct 类型 as 类型名,'' as 名称,'yes' as 根,null as ID,类型 as 排序 from 表a
union all
select '' as 类型名,名称,'no' as 根,id,类型 as 排序 from 表a
)
order by 排序,id
rookie_one 2007-02-09
  • 打赏
  • 举报
回复
--------------------------------
类型 名称 根 ID
A YES
A name1 NO 1
A name3 NO 3
B YES
A name2 NO 2
A name4 NO 4
mlb2729 2007-02-09
  • 打赏
  • 举报
回复
學習..
rocy520 2007-02-09
  • 打赏
  • 举报
回复

rookie_one 2007-02-09
  • 打赏
  • 举报
回复
create table #temp
(ID int,
类型 varchar(10),
名称 varchar(50)
)
insert into #temp
select '1','A','name1' union all select '2','B','name2' union all select '3','A','name3' union all select '4','B','name4'
select * from #temp
rookie_one 2007-02-09
  • 打赏
  • 举报
回复
select 类型,名称,根,isnull(cast(ID as varchar(10)),'' ) ID from
(
select distinct 类型,'' 名称,'YES' 根,null ID from 表
union all
select 类型,名称,'NO' 根,ID from 表
)y
order by 类型,名称
zheninchangjiang 2007-02-09
  • 打赏
  • 举报
回复
access版
stou 2007-02-09
  • 打赏
  • 举报
回复

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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