计数:SQL:DB2

7kqas0il  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(188)

我有这张表:
| 代码|国际标准化组织|名称|极限值|
| - -|- -|- -|- -|
| 一百二十三|八十个|第三十章|2019年5月|
| 一百二十三|八十一人|第三十章|2019年至10月|
| 一百二十四|八十个|年年|2019年1月|
| 一百二十五|八十个|兹兹|2019年5月|
| 一百二十五|八十一人|兹兹|2019年6月|
| 一百二十五|八十个|兹兹|2019年7月|
| 一百二十六|八十个|第三章|2019年5月|
| 一百二十六|八十个|第三章|2019年9月|
| 一百二十六|八十个|第三章|2019年7月|
我想有一个新的列(计数限制)包含多少限制每个代码,和另一个包含是如果限制是连续的,如果不是。我的结果,我想像:
| 代码|国际标准化组织|名称|极限值|计数限制|连续|
| - -|- -|- -|- -|- -|- -|
| 一百二十三|八十个|第三十章|2019年5月|2个|否|
| 一百二十三|八十一人|第三十章|2019年至10月|2个|否|
| 一百二十四|八十个|年年|2019年1月|一个|否|
| 一百二十五|八十个|兹兹|2019年5月|三个|是的|
| 一百二十五|八十一人|兹兹|2019年6月|三个|是的|
| 一百二十五|八十个|兹兹|2019年7月|三个|是的|
| 一百二十六|八十个|第三章|2019年5月|三个|否|
| 一百二十六|八十个|第三章|2019年9月|三个|否|
| 一百二十六|八十个|第三章|2019年7月|三个|否|
谢谢你!

ovfsdjhp

ovfsdjhp1#

试试看:

WITH T (CODE, IDNR, NAME, LIMIT) AS
(
VALUES
  (123, 80, 'XXX', '2019-05')
, (123, 81, 'XXX', '2019-10')
, (124, 80, 'YYY', '2019-01')
, (125, 80, 'ZZZ', '2019-05')
, (125, 81, 'ZZZ', '2019-06')
, (125, 80, 'ZZZ', '2019-07')
, (126, 80, 'III', '2019-05')
, (126, 80, 'III', '2019-09')
, (126, 80, 'III', '2019-07')

, (128, 80, 'AAA', '2021-01')
, (128, 80, 'AAA', '2021-03')
, (128, 80, 'AAA', '2021-05')
, (128, 80, 'AAA', '2021-07')
, (128, 80, 'AAA', '2021-08')
, (128, 80, 'AAA', '2021-09')
)
SELECT 
  T.*
, COUNT (1) OVER (PARTITION BY CODE) AS COUNT_LIMIT
, CASE
    WHEN TO_DATE (LIMIT || '-01', 'YYYY-MM-DD') IN
      (
        LAG  (TO_DATE (LIMIT || '-01', 'YYYY-MM-DD')) OVER (PARTITION BY CODE ORDER BY LIMIT) + 1 MONTH
      , LEAD (TO_DATE (LIMIT || '-01', 'YYYY-MM-DD')) OVER (PARTITION BY CODE ORDER BY LIMIT) - 1 MONTH
      )
    THEN 'YES' 
    ELSE 'NO' 
  END AS CON
FROM T
ORDER BY CODE, LIMIT

其结果是:
| 代码|国际标准化组织|名称|极限值|计数_限制|连续|
| - -|- -|- -|- -|- -|- -|
| 一百二十三|八十个|第三十章|2019年5月|2个|否|
| 一百二十三|八十一人|第三十章|2019年至10月|2个|否|
| 一百二十四|八十个|年年|2019年1月|一个|否|
| 一百二十五|八十个|兹兹|2019年5月|三个|是的|
| 一百二十五|八十一人|兹兹|2019年6月|三个|是的|
| 一百二十五|八十个|兹兹|2019年7月|三个|是的|
| 一百二十六|八十个|第三章|2019年5月|三个|否|
| 一百二十六|八十个|第三章|2019年7月|三个|否|
| 一百二十六|八十个|第三章|2019年9月|三个|否|
| 一百二十八|八十个|美国汽车协会|2021年1月|六个|否|
| 一百二十八|八十个|美国汽车协会|2021年3月|六个|否|
| 一百二十八|八十个|美国汽车协会|2021年至2025年|六个|否|
| 一百二十八|八十个|美国汽车协会|2021年至2007年|六个|是的|
| 一百二十八|八十个|美国汽车协会|2021年8月|六个|是的|
| 一百二十八|八十个|美国汽车协会|2021年至9月|六个|是的|

相关问题