首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IF ELSE用于特定情况

IF ELSE用于特定情况
EN

Stack Overflow用户
提问于 2019-05-09 04:41:42
回答 3查看 52关注 0票数 0

我需要将两个不同但相关的Excel公式转换为SQL,以便在报告中生成必要的信息。

report for reference

1)列I正在计算列C和列D之间的差值,如果列D中没有值,则计算列C和列H之间的差值。

2)列J计算列C和列H之间经过的总时间,或者列C和列H减去列D到列E之间的总时间。

第一个公式在第一列--

代码语言:javascript
运行
复制
=TEXT(IF(D3<>"",D3-C3,H3-C3),"H:MM:SS")

第二个公式在J栏--

代码语言:javascript
运行
复制
=TEXT((H3-C3)-(E3-D3), "H:MM:SS")

这是我看完this video后尝试的,我基本上没有SQL知识…(实际标题名称为sub COLUMND/C/H。)--

代码语言:javascript
运行
复制
IF COLUMND > 0
    BEGIN
        COLUMND – COLUMNC
    END
ELSE
    BEGIN
        COLUMNH – COLUMNC
    END

我希望使用SQL计算正确的值,而不必导出报告和输入Excel公式。

EN

回答 3

Stack Overflow用户

发布于 2019-05-09 04:55:36

如果要使用case语句,下面是如何计算Col i的方法:

代码语言:javascript
运行
复制
SELECT CASE WHEN StartMeal is not null THEN StartMeal - StartShift
ELSE EndShift - StartShift END AS Difference
票数 1
EN

Stack Overflow用户

发布于 2019-05-09 05:02:21

对于初学者,您应该共享表定义,因为数据类型会影响数据的处理方式。这里有一个关于如何得到你想要的东西的例子。第一部分是您应该如何发布您的样本数据以供询问。

代码语言:javascript
运行
复制
CREATE TABLE #SampleData(
    EmployeeName    varchar(100),
    ShiftDate       date,
    StartShift      datetime,
    StartMeal       datetime,
    EndMeal         datetime,
    EndShift        datetime)
INSERT INTO #SampleData
VALUES( 'TEST, TEST A', '20190424', '20190424 18:48', NULL, NULL, '20190425 03:04'),
      ( 'TEST, TEST B', '20190425', '20190425 07:00', '20190425 12:59', '20190425 13:57', '20190425 16:03')

SELECT * ,
    CONVERT( time, DATEADD( mi, ISNULL( DATEDIFF(mi, StartShift, StartMeal), DATEDIFF(mi, StartShift, EndShift)), 0)),
    CONVERT( time, DATEADD( mi, DATEDIFF(mi, StartShift, EndShift)- ISNULL(DATEDIFF(mi, StartMeal, EndMeal), 0), 0))
FROM #SampleData
票数 0
EN

Stack Overflow用户

发布于 2019-05-09 05:07:59

SQL Fiddle示例:http://sqlfiddle.com/#!18/3da8b/10

SQL查询:

代码语言:javascript
运行
复制
SELECT CONVERT(VARCHAR, 
               CASE
                 WHEN Startmeal is Null THEN EndShift - StartShift
                 ELSE StartMeal - StartShift
               END,
               8) AS DifferenceBetweenStartAndLunchOrEndTime
FROM MyTest;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56048755

复制
相关文章

相似问题

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