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

急。在线等。。分组后,我只要分组里的一条数据。 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