选择列的最大值

卡洛塔·法布里斯(Carlotta Fabris)

我有此查询根据某些条件选择一些字段:

 SELECT [Qty].[plant_no]
      ,[Qty].[ord_no]
      ,[Qty].[form_no]
      ,[Qty].[form_var]
      ,[Qty].[form_part]
      ,[Qty].[res_no]
      ,isnull([RFORMPARTS].[cost_center],'_') as [RFORMPARTS_cost_center]
      ,[BARTICLES].[wght_net] AS [Unit_kg]
      ,CASE
        WHEN [Qty].[qty_unit] IN ('KG','KG-C') THEN [Qty].[fb_qty]
        WHEN [Qty].[qty_unit] = 'NR' THEN [Qty].[fb_qty]*[BARTICLES].[wght_net]
        END AS [Qty_KG]
  FROM [dbo].[E00_PRD_003] AS [Qty]
  LEFT JOIN [dbo].[RFORMPARTS] as [RFORMPARTS] ON [RFORMPARTS].[form_no] =  [Qty].[form_no] AND [RFORMPARTS].[form_var] = [Qty].[form_var] and [RFORMPARTS].[form_part] = [qty].form_part
  LEFT JOIN [dbo].[BARTICLES] AS [BARTICLES] ON [BARTICLES].[art_no] = [Qty].[form_no]
  WHERE CONVERT(VARCHAR(10),[Qty].[date_start],112) >= 20180101 AND [Qty].[in_out] = '02' AND LEFT([Qty].[res_no],2) <> 'SL'

我想获得每个[Qty]。[ord_no]和[Qty]。[form_no]的最大Qty.form_part,同时保留所有选定字段。有可能和一群人一起做吗?如果是,我该怎么办?如果没有,还有其他方法吗?

瑞安·威尔逊(Ryan Wilson)

如果我了解您的要求,一种选择是创建一个子查询,该子查询返回max每个ord_noform_no对的,您将使用Group By但仅在子查询中,然后max form_part在外部查询结果中使用子查询的值,如果您只需要具有每个ord_noform_no最大值的行,则可以INNER JOIN向子查询的条件添加一个条件,并添加form_part值的联接,以便它也联接在最大值上,这将过滤掉所有多余的条件具有相同ord_noform_no组合且小于最大值的行form_part

 SELECT [Qty].[plant_no]
      ,[Qty].[ord_no]
      ,[Qty].[form_no]
      ,[Qty].[form_var]
      --,[Qty].[form_part] --Replaced with the subquery max
      ,[maxVals].[form_part] --Max values returned by subquery
      ,[Qty].[res_no]
      ,isnull([RFORMPARTS].[cost_center],'_') as [RFORMPARTS_cost_center]
      ,[BARTICLES].[wght_net] AS [Unit_kg]
      ,CASE
        WHEN [Qty].[qty_unit] IN ('KG','KG-C') THEN [Qty].[fb_qty]
        WHEN [Qty].[qty_unit] = 'NR' THEN [Qty].[fb_qty]*[BARTICLES].[wght_net]
        END AS [Qty_KG]
  FROM [dbo].[E00_PRD_003] AS [Qty]
  INNER JOIN --INNER JOIN the max values on the Qty table
  (
      SELECT [ord_no], [form_no], MAX([form_part]) AS [form_part]
      FROM [dbo].[E00_PRD_003]
      GROUP BY [ord_no], [form_no]
  ) AS maxVals
  ON [maxVals].[ord_no] = [Qty].[ord_no] AND [maxVals].[form_no] = [Qty].[form_no] 
  AND [maxVals].[form_part] = [Qty].[form_part] 
  LEFT JOIN [dbo].[RFORMPARTS] as [RFORMPARTS] ON [RFORMPARTS].[form_no] =  [Qty].[form_no] AND [RFORMPARTS].[form_var] = [Qty].[form_var] and [RFORMPARTS].[form_part] = [qty].form_part
  LEFT JOIN [dbo].[BARTICLES] AS [BARTICLES] ON [BARTICLES].[art_no] = [Qty].[form_no]
  WHERE CONVERT(VARCHAR(10),[Qty].[date_start],112) >= 20180101 AND [Qty].[in_out] = '02' AND LEFT([Qty].[res_no],2) <> 'SL'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从列SQL中选择最大值

来自分类Dev

选择列和最大值

来自分类Dev

选择列的SQL最大值

来自分类Dev

选择的最大值

来自分类Dev

选择多个最大值

来自分类Dev

SQL选择最大值

来自分类Dev

选择单个最大值

来自分类Dev

Oracle SQL:如何从派生列中选择最大值

来自分类Dev

如何在MySQL中选择列的最大值

来自分类Dev

选择R中每列的最大值

来自分类Dev

通过另一列的最大值选择

来自分类Dev

如何在两列中选择最大值的记录?

来自分类Dev

选择列的最大值时的JOIN表

来自分类Dev

选择在变量中提供列名的列的最大值

来自分类Dev

使用两列的最大值选择记录

来自分类Dev

选择具有最大值保存不同列的行

来自分类Dev

根据列 SQL Server 中的最大值选择行

来自分类Dev

EFCore Linq:仅选择列最大值的记录

来自分类Dev

选择一列的最小值,另一列的最大值以及与最大值相关的字段

来自分类Dev

选择最大值而不使用最大值?

来自分类Dev

列中的最大值

来自分类Dev

获取列的最大值

来自分类Dev

SQL Server中选择一行的最大值和最大值的列名作为两列

来自分类Dev

选择最大值时如何选择最大日期值

来自分类Dev

如何选择*并按一列分组,同时选择另一列的最大值?

来自分类Dev

在列中找到最大值,选择相应的值,然后复制并粘贴这些值

来自分类Dev

合并r中的列值时,如何选择较高(最大值)的值

来自分类Dev

根据其他列的最大值选择列中的值

来自分类Dev

为其他两列中的每个值从列中选择最大值