急。在线等。。分组后,我只要分组里的一条数据。 sql该如何??
ms sql
SELECT a.SiteId, b.DeptId
FROM T_Site AS a INNER JOIN
T_SiteDept AS b ON a.SiteId = b.SiteId AND a.SiteTypeId = 'KeSite '
GROUP BY a.SiteId, b.DeptId
一站点有多个管理部门,我现在的需求是只要分组里面的任一一条数据。。。。
????
------解决方案----------------------这样?每个分组里取一行数据
create table T_Site(SiteId int, SiteName varchar(10))
insert T_Site select 1, 'A站 '
insert T_Site select 2, 'B站 '
insert T_Site select 3, 'C站 '
create table T_SiteDept(DeptId int, DeptName varchar(10), SiteId int)
insert T_SiteDept select 1, '行政部 ', 1
insert T_SiteDept select 2, '财务部 ', 1
insert T_SiteDept select 3, '开发部 ', 2
insert T_SiteDept select 4, '测试部 ', 2
insert T_SiteDept select 5, '销售部 ', 3
select * from T_Site
inner join
(
select * from T_SiteDept as tmp
where (select count(*) from T_SiteDept where SiteId=tmp.SiteId and DeptId <=tmp.DeptId)=1
)T_SiteDept on T_Site.SiteId=T_SiteDept.SiteId
--
SiteId SiteName DeptId DeptName SiteId
----------- ---------- ----------- ---------- -----------
1 A站 1 行政部 1
2 B站 3 开发部 2
3 C站 5 销售部 3
(3 row(s) affected)
------解决方案--------------------SELECT a.SiteId, min(b.DeptId) as DeptId
FROM T_Site AS a INNER JOIN
T_SiteDept AS b ON a.SiteId = b.SiteId AND a.SiteTypeId = 'KeSite '
GROUP BY a.SiteId