求一SQL语句

ecivilian 2003-05-28 05:13:02
表A及内容:
客户名:类别:

客户A 类别A
客户A 类别B
客户A 类别C
客户A 类别B
客户A 类别D
客户A 类别A

要实现:
客户A 类别A 类别B 类别C
客户B 类别B 类别D
客户C 类别A

表A中的内容(客户名和类别)是不固定的,可能会有类别E,F...。

我用ACCESS数据库,在VB里使用,请问怎么写这语句?
如果就在SQL SERVER的查询分析器里执行的话,要怎么写?
...全文
28 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ecivilian 2003-05-29
  • 打赏
  • 举报
回复
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tmp]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tmp]
GO
select distinct 类别 into tmp from 客户类别
go
declare @sql nvarchar(4000)
select @sql='select 客户'
select @sql=@sql+',max((case 类别 when '''+tmp.类别+''' then 类别 else '''' end))' from tmp
select @sql=@sql+' from 客户类别 group by 客户'
exec(@sql)
上面写成存储过程可以运行。但我是用的ACCESS数据库,且要在VB里运行,请问各位高手怎么实现?
大健 2003-05-28
  • 打赏
  • 举报
回复
CREATE TABLE table1(
客户名 varchar(20),
类别 varchar(20)
)
INSERT table1(客户名,类别) VALUES('客户A','类别A')
INSERT table1(客户名,类别) VALUES('客户A','类别B')
INSERT table1(客户名,类别) VALUES('客户A','类别C')
INSERT table1(客户名,类别) VALUES('客户A','类别D')
INSERT table1(客户名,类别) VALUES('客户B','类别B')
INSERT table1(客户名,类别) VALUES('客户B','类别D')
INSERT table1(客户名,类别) VALUES('客户C','类别A')

SELECT a.客户名,
ISNULL((SELECT TOP 1 类别 FROM table1
WHERE 客户名=a.客户名 AND 类别='类别A'),' ')+' '+
ISNULL((SELECT TOP 1 类别 FROM table1
WHERE 客户名=a.客户名 AND 类别='类别B'),' ')+' '+
ISNULL((SELECT TOP 1 类别 FROM table1
WHERE 客户名=a.客户名 AND 类别='类别C'),' ')+' '+
ISNULL((SELECT TOP 1 类别 FROM table1
WHERE 客户名=a.客户名 AND 类别='类别D'),' ')
FROM table1 a
group by a.客户名

结果:

客户A 类别A 类别B 类别C 类别D
客户B 类别B 类别D
客户C 类别A
TimCheng 2003-05-28
  • 打赏
  • 举报
回复
你的实现能否说得明白点?

34,587

社区成员

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

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