sql-选择为一个字段记录相同的值,在另一个字段上记录不同的值

用户名

我有这个查询:

select CPRCOSC, CPRCDCO, FCHPRDT ,CPRDTPA
from ocsacpr,
     fasaorl,
     fasaorh
where CPRCOSC = 'GHY02'
  and fclcosc = CPRCOSC
  and fclcdcm = CPRCDCO
  and fclverc = CPRVER
  and fclnumc = CPRNUM
  and FCHORDN = FCLORDN
  and FCHCOSC = FCLCOSC

它给了我:

CPRCOSC CPRCDCO     FCHPRDT     CPRDTPA
GHY02   2015000036  20150728    20150728
GHY02   2015000037  20150723    20150723
GHY02   2015000038  20150722    20150722
GHY02   2015000039  20150918    20150930
GHY02   2015000040  20150918    20150930
.....
GHY02   2015000041  20150731    20150731
GHY02   2015000041  20150918    20150831
GHY02   2015000041  20150921    20150930

对于最后3条记录(具有CPRCDCO),我只想选择具有FCHPRDT较高记录的20150921在示例中)。

我该如何编辑查询?

提前致谢

莱昂纳多·弗雷塔斯

您可以使用窗口函数(FIRST_VALUE),按CPRCDCO分区并按FCHPRDT(降序)进行排序。查看功能文档。

https://msdn.microsoft.com/zh-CN/library/hh213018.aspx

以下代码可以很好地工作,但是我建议您也使用INNER JOIN子句,而不要在WHERE子句中进行联接。

SELECT DISTINCT
      CPRCOSC, 
      CPRCDCO, 
      FIRST_VALUE(FCHPRDT) OVER (PARTITION BY CPRCDCO ORDER BY FCHPRDT DESC) AS FCHPRDT,
      FIRST_VALUE(CPRDTPA) OVER (PARTITION BY CPRCDCO ORDER BY FCHPRDT DESC) AS CPRDTPA
    FROM 
      OCSACPR, FASAORL, FASAORH
    WHERE 
      CPRCOSC = 'GHY02'
      AND FCLCOSC = CPRCOSC
      AND FCLCDCM = CPRCDCO
      AND FCLVERC = CPRVER
      AND FCLNUMC = CPRNUM
      AND FCHORDN = FCLORDN
      AND FCHCOSC = FCLCOSC

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用SQL根据记录中的另一个字段检索组合记录的字段值

来自分类Dev

SQL:基于另一个字段的值的条件字段输出

来自分类Dev

在一个字段或另一个字段上的SQL JOIN

来自分类Dev

Sql server Pivot并从一个字段创建多个记录并拆分另一个字段

来自分类Dev

SQL仅根据另一个字段的值过滤一个字段的某些值

来自分类Dev

SQL:如果一个字段为空或为0,则选择另一个字段

来自分类Dev

Microsoft SQL Server:触发以检查由另一个字段分组的一个字段的总和是否不超过特定值?

来自分类Dev

SQL选择一个字段等于另一个字段,但中间有一个附加字符的地方

来自分类Dev

SQL-如何基于另一个字段聚合一个字段

来自分类Dev

在Oracle SQL的另一个字段中查找一个字段中的文本

来自分类Dev

一个字段的Oracle SQL计数由另一个字段分组

来自分类Dev

基于TSQL / Microsoft SQL Server中另一个字段的字段的数据透视值

来自分类Dev

SQL查询以获取一个字段为另一个特定字段重复的次数

来自分类Dev

如何将数据从一个字段复制到SQL Server中不同行中的另一个字段

来自分类Dev

SQL触发器以将字段值“移动”到同一表上的另一个字段

来自分类Dev

SQL或Tableau引用另一个字段将其替换为现有的值

来自分类常见问题

SQL:在一个字段中按最小值分组,同时选择不同的行

来自分类Dev

SQL更新字段基于另一个字段的条件

来自分类Dev

将SQL表ID转换为PHP中的另一个字段

来自分类Dev

SQL:DATEDIFF如果开始日期大于另一个字段中的日期

来自分类Dev

SQL Server:插入一个复杂的选择查询,其中一个字段是不同的

来自分类Dev

如何在SQL中仅在一个字段上选择没有重复的记录,而在SQL中总共选择重复的字段

来自分类Dev

SQL查询以按其他字段选择一个字段顺序

来自分类Dev

SQL Server-从同一视图表中的其他字段创建值一个字段

来自分类Dev

SQL 使用 Max 从一个字段返回 2 个不同的日期

来自分类Dev

如何获取SQL Server 2014中至少一个字段有数字的记录?

来自分类Dev

SQL:计算从一个表到同一表中另一个字段的字段重复次数

来自分类Dev

SQL Regex-用另一个字段的子字符串替换

来自分类Dev

当另一个字段位于GROUP BY中时,SQL查询的WHERE大于计数

Related 相关文章

  1. 1

    使用SQL根据记录中的另一个字段检索组合记录的字段值

  2. 2

    SQL:基于另一个字段的值的条件字段输出

  3. 3

    在一个字段或另一个字段上的SQL JOIN

  4. 4

    Sql server Pivot并从一个字段创建多个记录并拆分另一个字段

  5. 5

    SQL仅根据另一个字段的值过滤一个字段的某些值

  6. 6

    SQL:如果一个字段为空或为0,则选择另一个字段

  7. 7

    Microsoft SQL Server:触发以检查由另一个字段分组的一个字段的总和是否不超过特定值?

  8. 8

    SQL选择一个字段等于另一个字段,但中间有一个附加字符的地方

  9. 9

    SQL-如何基于另一个字段聚合一个字段

  10. 10

    在Oracle SQL的另一个字段中查找一个字段中的文本

  11. 11

    一个字段的Oracle SQL计数由另一个字段分组

  12. 12

    基于TSQL / Microsoft SQL Server中另一个字段的字段的数据透视值

  13. 13

    SQL查询以获取一个字段为另一个特定字段重复的次数

  14. 14

    如何将数据从一个字段复制到SQL Server中不同行中的另一个字段

  15. 15

    SQL触发器以将字段值“移动”到同一表上的另一个字段

  16. 16

    SQL或Tableau引用另一个字段将其替换为现有的值

  17. 17

    SQL:在一个字段中按最小值分组,同时选择不同的行

  18. 18

    SQL更新字段基于另一个字段的条件

  19. 19

    将SQL表ID转换为PHP中的另一个字段

  20. 20

    SQL:DATEDIFF如果开始日期大于另一个字段中的日期

  21. 21

    SQL Server:插入一个复杂的选择查询,其中一个字段是不同的

  22. 22

    如何在SQL中仅在一个字段上选择没有重复的记录,而在SQL中总共选择重复的字段

  23. 23

    SQL查询以按其他字段选择一个字段顺序

  24. 24

    SQL Server-从同一视图表中的其他字段创建值一个字段

  25. 25

    SQL 使用 Max 从一个字段返回 2 个不同的日期

  26. 26

    如何获取SQL Server 2014中至少一个字段有数字的记录?

  27. 27

    SQL:计算从一个表到同一表中另一个字段的字段重复次数

  28. 28

    SQL Regex-用另一个字段的子字符串替换

  29. 29

    当另一个字段位于GROUP BY中时,SQL查询的WHERE大于计数

热门标签

归档