Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server T-SQL中的多重分组_Sql Server_Tsql - Fatal编程技术网

Sql server T-SQL中的多重分组

Sql server T-SQL中的多重分组,sql-server,tsql,Sql Server,Tsql,我们如何检查树木、种子、花朵和年份组是否存在FLRNO,并且所有可用注释1都存在于一个组中 及 同一组树、种子、花和年份有注释3,该注释与所有可用注释1一起存在 对于树苹果神,没有“SE;臭味花”可供选择,因此整个组别都被排除在输出之外。 预期产出: /* */ --已尝试查询,但未给出结果 'BANANA', 'Nis', 'Tit', '2004', '57101', 'Sweet Smell Flower', '' 'BANANA', 'Nis', 'Tit',

我们如何检查树木、种子、花朵和年份组是否存在FLRNO,并且所有可用注释1都存在于一个组中 及 同一组树、种子、花和年份有注释3,该注释与所有可用注释1一起存在

对于树苹果神,没有“SE;臭味花”可供选择,因此整个组别都被排除在输出之外。

预期产出: /*

*/

--已尝试查询,但未给出结果

 'BANANA',  'Nis',  'Tit',  '2004', '57101',    'Sweet Smell Flower',  '' 
'BANANA',   'Nis',  'Tit',  '2004', '57101',    'Bad Smell flower'  ,  '' 
 'BANANA',  'Nis',  'Tit',  '2004', 'B0019B',   'Sweet Smell Flower',      
'CATCH ME' 
 'BANANA',  'Nis',  'Tit',  '2004', 'B0019B',   'Bad Smell flower',    'CATCH ME' 

目前还不清楚你想要实现什么,但至少这会让你得到这样的结果:

; WITH CTE AS (
   SELECT [TREE], SEED, FLOWER, YEAR,
          COUNT(DISTINCT hash) AS grp_count,
          --COUNT(*) AS grp_count,
          COUNT(DISTINCT FLRNO) AS part_grp_count,
          COUNT(DISTINCT COMMENT1) AS COMMENT1_grp_count,
          COUNT(DISTINCT COMMENT3)AS COMMENT3_grp_count
   FROM   #temp
   GROUP  BY [TREE], SEED, FLOWER, YEAR
)
SELECT *
FROM   #temp t
WHERE  EXISTS (SELECT *
               FROM   CTE
               WHERE  CTE.[TREE] = t.[TREE]
                 AND  CTE.FLOWER = t.FLOWER
                 AND  CTE.SEED = t.SEED
                 AND  CTE.YEAR = t.YEAR
                 AND  CTE.grp_count = CTE.COMMENT1_grp_count * CTE.COMMENT3_grp_count * CTE.part_grp_count
                 AND  CTE.COMMENT1_grp_count > 1)

中的示例请任何人提出如何实现这一目标的建议。如果可能的话,你应该尝试解决这个问题,例如“这是存在的,所有可用的评论1都在一个组中出现”没有真正的意义。谢谢。我试图实现的结果集应仅在满足所有三个标准时出现:1:对于一组树、种子、花和年份,应始终有多个不同的FLRNO;2:一组树、种子、花和年份中的FLRNO数量应与组中的所有可用注释1一致;3:对于一组树、种子,花与年,所有评论3的编号,也将与所有评论一起提供。11 ST与我回答中的评论1相似,阅读你的评论5次,无法理解你想说什么。
; WITH CTE AS (
   SELECT [TREE], SEED, FLOWER, YEAR,
          COUNT(DISTINCT hash) AS grp_count,
          --COUNT(*) AS grp_count,
          COUNT(DISTINCT FLRNO) AS part_grp_count,
          COUNT(DISTINCT COMMENT1) AS COMMENT1_grp_count,
          COUNT(DISTINCT COMMENT3)AS COMMENT3_grp_count
   FROM   #temp
   GROUP  BY [TREE], SEED, FLOWER, YEAR
)
SELECT *
FROM   #temp t
WHERE  EXISTS (SELECT *
               FROM   CTE
               WHERE  CTE.[TREE] = t.[TREE]
                 AND  CTE.FLOWER = t.FLOWER
                 AND  CTE.SEED = t.SEED
                 AND  CTE.YEAR = t.YEAR
                 AND  CTE.grp_count = CTE.COMMENT1_grp_count * CTE.COMMENT3_grp_count * CTE.part_grp_count
                 AND  CTE.COMMENT1_grp_count > 1)
select * from temp t
where 
  (
    select top 1 count(distinct comment1)
    from temp t2
    where t2.tree = t.tree
    group by t2.comment3
    order by 1 asc
  ) > 1