首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >交叉联接中的操作数与日期表和varchar日期字符串冲突

交叉联接中的操作数与日期表和varchar日期字符串冲突
EN

Stack Overflow用户
提问于 2018-11-16 01:03:00
回答 1查看 61关注 0票数 0

这是我上一个问题的后续,但由于我试图简化,我似乎遗漏了一些Daily snapshot table using cte loop

我尝试在dates和employee表之间设置下面的交叉连接。我需要一个根据部门和部门的每日计数,但日期不容易链接,因为日期存储为varchar (这不是我的选择,我不能更改它)。

我现在有了一个日期表,其中包含一个style112 (yyyymmdd)键,我可以将其链接到该表,但在连接过程中似乎出现了故障。

我是如此的接近,但是我真的迷失了!我从来没有使用过字符串日期,也不希望任何人都这样做。

代码语言:javascript
复制
    DECLARE @DATESTART AS Date = '20180928';

    DECLARE @DATEEND AS Date = '20181031';

    WITH Dates AS (
        SELECT  @DATESTART AS Dte
        UNION ALL
        SELECT  DTE + 1
        FROM Dates
        WHERE Dte <= @DATEEND  )

    SELECT
        Dt.Dte
        ,CAST(DTC.Style112 AS VARCHAR)
        ,Emp.Division_Description
        ,Emp.Department_Description
        ,(SELECT
                COUNT(*)
            FROM ASS_D_EmpMaster_Live E

            WHERE
                E.[Start_Date] <= CAST(DTC.Style112 AS VARCHAR)
                AND (E.Leaving_Date > CAST(DTC.Style112 AS VARCHAR)
                            OR E.Leaving_Date = '00000000')
                                 ) Counts
    FROM Dates Dt

    LEFT JOIN ASS_C_DateConversions DTC
        ON DTC.[Date] = Dt.DtE


        CROSS JOIN
            (
                SELECT DISTINCT
                    Division_Description
                    ,Department_Description
                FROM
                    ASS_D_EmpMaster_Live e              
                ) Emp

    OPTION (MAXRECURSION 1000)

所需输出:

日期* Dept3

20180901元人民币,25元人民币,231元人民币,154元人民币。

20180902元人民币,23元人民币,232元人民币,154元人民币。

EN

回答 1

Stack Overflow用户

发布于 2018-11-16 01:58:27

代码语言:javascript
复制
SELECT COUNT(*)
FROM ASS_D_EmpMaster_Live E
WHERE
         CAST(E.Start_Date   AS DATE) <= Dt.Dte
    AND (CAST(E.Leaving_Date AS DATE) >  Dt.Dte OR E.Leaving_Date = '00000000')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53324519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档