sql-server - 基于另一个值 SQL Server 的计算字段
问题描述
我在 Azure SQL 服务器中有一个表,其中有一个值和一个日期。
CREATE TABLE [dbo].[example] (
[Value] varchar(50) NULL,
[Date] date NULL
)
INSERT INTO [dbo].[example] ([Value], [Date]) VALUES (N'A', N'2020-04-01')
GO
INSERT INTO [dbo].[example] ([Value], [Date]) VALUES (N'A', N'2020-04-01')
GO
INSERT INTO [dbo].[example] ([Value], [Date]) VALUES (N'B', N'2020-04-03')
GO
INSERT INTO [dbo].[example] ([Value], [Date]) VALUES (N'C', N'2020-04-03')
GO
我对 MySQL 的经验有限,并且对更改后的语句有困难。在这个数据库中,我需要根据该值计算一个新日期。
我知道如何使用以下语句进行 Dateadd。
SELECT
example.[Value],
example.[Date],
DATEADD(day, 10, example.[Date]) AS NewDate
FROM
dbo.example
但它会将日期添加到所有人。我已经阅读了 if else 语句,但这就是我无法得到结果的地方。
我需要的是,如果值在(B,C)中,它应该只添加 10 天,否则在当前日期字段中添加 20 天。如何将 If 语句设置为适用于每一行,因为如果我使用其背后的逻辑,它会返回多个结果并且它将无法工作
解决方案
您可以使用 SQL Server 中的 if 且仅 if 语句来完成此操作。 https://www.w3schools.com/sql/func_sqlserver_iif.asp
它看起来像这样:
SELECT
example.[Value],
example.[Date],
IIF(Value IN ('B','C'), DATEADD(day, 10, example.[Date]), DATEADD(day, 20, example.[Date])) AS NewDate
FROM
dbo.example
推荐阅读
- php - 第一次使用 PHP cURL,集成 API 签名表单的小问题
- sql - 如何做 2 个子请求来计算表中的男人和女人
- python - 在我的 python 脚本中更新 requests.get
- javascript - 复制功能无法识别 p5js 中另一个画布上的图像
- vue.js - Vue/Nuxt - 从子元素触发鼠标离开
- r - R中函数运行时的异常值
- parsing - 逐字节搜索文件的正确方法是什么?
- wordpress - 在帖子页面上预填充 Woocommerce 简短描述
- firebase - 从 Firestore Flutter 中的文档中获取用户名
- java - 无法解析方法'toString()