给出示例
通过GRP_ID和GRP_MAIN集定义组。橙色和绿色是它应该得到的例子。蓝色是我们拥有的。
所有具有相同NAME的人应该被分组以具有相同的UNIQUE GRP_ID(唯一是重要的,因为已经有一些数据组合在一起)并且MAX或TOP或AVG记录应该被标记为GRP_MAIN。
答案 0 :(得分:0)
只需将其复制到一个空的查询窗口并执行......以适应您的需求......
您应该使用此查询一次将数据随机播放到包含GRU_ID和GRP_MAIN列的新表中。 GRP_ID应该是IDENTITY ......
DECLARE @tbl TABLE(VALUE INT, NAME VARCHAR(10));
INSERT INTO @tbl VALUES
(12,'ab')
,(1,'ab')
,(2,'ab')
,(34,'ab')
,(5,'ab')
,(6,'ab')
,(3,'fg')
,(45,'fg')
,(65,'fg')
,(2,'ht')
,(3,'ht')
,(44,'hh')
,(5,'hh')
,(6,'hh')
,(7,'hh');
WITH DistinctNames AS
(
SELECT ROW_NUMBER() OVER(ORDER BY Name) AS Inx, x.NAME
FROM
(
SELECT DISTINCT NAME
FROM @tbl
) AS x
)
SELECT dn.Inx AS GRP_ID
,CASE WHEN tbl.Value=MainRec.VALUE THEN 1 ELSE 0 END AS GRP_MAIN
,tbl.VALUE
,tbl.NAME
FROM @tbl AS tbl
INNER JOIN DistinctNames AS dn ON tbl.NAME=dn.NAME
CROSS APPLY(SELECT TOP 1 x.* FROM @tbl AS x WHERE x.NAME=dn.NAME ORDER BY VALUE DESC) AS MainRec