日期:2014-05-18  浏览次数:20520 次

關於select查詢的寫法
我有一張表:TEST(Menu_Name   varchar(3),   Action_Name   varchar(4)   )
里面的資料顯示為
Menu_Name               Action_Name
  A01                               新增
  A01                               修改
  A01                               刪除
  A01                               審核
  B01                               新增
  B01                               修改
  C01                               刪除
  C01                               審核
現在我想用SELECT查詢顯示結果為:
  Menu_Name             Action_Name
      A01                           新增;修改;刪除;審核
      B01                           新增;修改
      C01                           刪除;審核

請大家指教一二,感激不盡!

------解决方案--------------------

create table T(Menu_Name varchar(3), Action_Name varchar(4) )
insert T select 'A01 ', '新增 '
union all select 'A01 ', '修改 '
union all select 'A01 ', '刪除 '
union all select 'A01 ', '審核 '
union all select 'B01 ', '新增 '
union all select 'B01 ', '修改 '
union all select 'C01 ', '刪除 '
union all select 'C01 ', '審核 '

create function fun(@Menu_Name char(3))
returns varchar(100)
as
begin
declare @re varchar(1000)
set @re= ' '
select @re=@re+Action_Name+ '; ' from T where Menu_Name=@Menu_Name
select @re=left(@re, len(@re)-1)

return @re
end

select distinct Menu_Name, dbo.fun(Menu_Name) as Action_Name from T

--result
Menu_Name Action_Name
--------- ----------------------------------------------------------------
A01 新增;修改;刪除;審核
B01 新增;修改
C01 刪除;審核

(3 row(s) affected)

------解决方案--------------------
create table test(Menu_Name varchar(3), Action_Name varchar(4))
insert into test(Menu_Name , Action_Name ) values ( 'A01 ', '新增 ')
insert into test(Menu_Name , Action_Name ) values ( 'A01 ', '修改 ' )
insert into test(Menu_Name , Action_Name ) values ( 'A01 ', '刪除 ')
insert into test(Menu_Name , Action_Name ) values ( 'A01 ', '審核 ')
insert into test(Menu_Name , Action_Name )values ( &