从select语句中的14个可能的列中返回日期

Dan Donoghue

我有一个名为F0008 Schema的表它有14列,我可以在其中找到开始日期(采用JDE Date格式),该日期可以从列名称中得知我的财政年度是什么月份。

这是一个示例,该示例将为我返回4的Test314的测试日期为2020年11月9日:

DECLARE @TestDate INT
SET @TestDate = 120314
SELECT  CASE
        WHEN F0008.CDD01J >= @TestDate THEN 1
        WHEN F0008.CDD02J >= @TestDate THEN 2
        WHEN F0008.CDD03J >= @TestDate THEN 3
        WHEN F0008.CDD04J >= @TestDate THEN 4
        WHEN F0008.CDD05J >= @TestDate THEN 5
        WHEN F0008.CDD06J >= @TestDate THEN 6
        WHEN F0008.CDD07J >= @TestDate THEN 7
        WHEN F0008.CDD08J >= @TestDate THEN 8
        WHEN F0008.CDD09J >= @TestDate THEN 9
        WHEN F0008.CDD10J >= @TestDate THEN 10
        WHEN F0008.CDD11J >= @TestDate THEN 11
        WHEN F0008.CDD12J >= @TestDate THEN 12
        WHEN F0008.CDD13J >= @TestDate THEN 13
        WHEN F0008.CDD14J >= @TestDate THEN 14
END AS int_num
  FROM [ODS].[PRODDTA].[F0008] F0008
  where F0008.CDDTPN = 'B'
  and   F0008.CDFY = 20

然后,我有了一个名为F42119 Schema的订单表该表中有一列称为SDIVD,它是JDE格式的更新日期。我可以从该表中获取日期范围,如下所示:

SELECT  distinct F42119.SDIVD
FROM    [ODS].[PRODDTA].[F42119] F42119
WHERE   F42119.SDIVD BETWEEN 120314 AND 120334
order by 1

我需要做的是结合这两个查询的结果,因此当我从F42119中提取日期列表时,我也可以从F0008中提取case语句的对应结果。

简而言之,我需要知道F42119上任何交易的财务月份号。

咖啡需要咖啡

除了看上去令人恐惧之外,还有什么阻止您将其扔到子查询中的功能吗?

SELECT  distinct F42119.SDIVD, 
 (
        SELECT  CASE
                WHEN F0008.CDD01J >= F42119.SDIVD THEN 1
                WHEN F0008.CDD02J >= F42119.SDIVD THEN 2
                WHEN F0008.CDD03J >= F42119.SDIVD THEN 3
                WHEN F0008.CDD04J >= F42119.SDIVD THEN 4
                WHEN F0008.CDD05J >= F42119.SDIVD THEN 5
                WHEN F0008.CDD06J >= F42119.SDIVD THEN 6
                WHEN F0008.CDD07J >= F42119.SDIVD THEN 7
                WHEN F0008.CDD08J >= F42119.SDIVD THEN 8
                WHEN F0008.CDD09J >= F42119.SDIVD THEN 9
                WHEN F0008.CDD10J >= F42119.SDIVD THEN 10
                WHEN F0008.CDD11J >= F42119.SDIVD THEN 11
                WHEN F0008.CDD12J >= F42119.SDIVD THEN 12
                WHEN F0008.CDD13J >= F42119.SDIVD THEN 13
                WHEN F0008.CDD14J >= F42119.SDIVD THEN 14
        END AS int_num
          FROM [ODS].[PRODDTA].[F0008] F0008
          where F0008.CDDTPN = 'B'
          and   F0008.CDFY = 20
         -- NOTE: you could also hide this in a function to make your life simpler
 ) as mySubqueryResult
FROM    [ODS].[PRODDTA].[F42119] F42119
WHERE   F42119.SDIVD BETWEEN 120314 AND 120334
order by 1

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SELECT语句中的SELECT返回0个计数

来自分类Dev

如何设置列以在select语句中返回值

来自分类Dev

一个sqlplus select语句中可能有多个CASE语句吗?

来自分类Dev

如何在Sql中的select语句中替换列值?

来自分类Dev

如何在Sql中的select语句中替换列值?

来自分类Dev

SELECT语句中的日期始终相同

来自分类Dev

在select语句中转换日期格式

来自分类Dev

在SELECT语句的单独行中返回列

来自分类Dev

Oracle中Case语句中的Select语句

来自分类Dev

在PostgreSQL中的一个insert into语句中添加两个select语句

来自分类Dev

使用仅带一个参数的GROUP BY在SELECT语句中的不同表中添加多个列

来自分类Dev

计算Rails ActiveRecord Select语句中两个日期之间的差异

来自分类Dev

在语句中返回2个计数结果

来自分类Dev

仅返回SQLite Select语句中的最后一个值

来自分类Dev

在分组的SELECT语句中限制COUNT个?

来自分类Dev

如何在select语句中连接可能包含NULL值的两列?

来自分类Dev

SQL查询仅返回SELECT语句中第一列的值

来自分类Dev

dbms_out返回列1:PLS-00428:SELECT语句中应有INTO子句

来自分类Dev

在SELECT INTO语句中添加额外的列

来自分类Dev

SELECT语句中的参数化列

来自分类Dev

从SELECT语句中排除列

来自分类Dev

在Java中的try catch语句中返回

来自分类Dev

在Java中的try catch语句中返回

来自分类Dev

在Java中的嵌套if语句中返回boolean

来自分类Dev

Codeigniter:查询返回select / like语句中表中的所有行

来自分类Dev

在LINQ中的select语句中执行计算

来自分类Dev

MySQL中SELECT语句中的CASE条件

来自分类Dev

在Python中的SELECT语句中传递列名

来自分类Dev

在SELECT语句中更改Oracle中的列名

Related 相关文章

热门标签

归档