【问题标题】:Using Array in Case Statement SQL在案例语句 SQL 中使用数组
【发布时间】:2021-12-27 05:26:57
【问题描述】:

我一直在尝试使下面的代码工作:

SELECT [Cell Name]
FROM ******* 

WHERE 

   [Date of maturity year] = (CASE
                             WHEN [Inforce date month] = 12 THEN [Inforce date year] + 1
                             ELSE [Inforce date year]
                             END)                   
And [Date of maturity month] in (7,8,9) 

这目前正在运行,但我想让第二个 where 条件动态化。我曾尝试使用 Case 语句,但它不起作用。

[Date of maturity month] in (CASE
                             WHEN [Inforce date month] = 12 THEN (1,2,3)
                             WHEN [Inforce date month] = 3 THEN (4,5,6)
                             WHEN [Inforce date month] = 6 THEN (7,8,9)
                             ELSE (10,11,12)
                             END)

谁能帮我解决这个问题。

【问题讨论】:

  • 您使用的是什么 RDMBS?
  • T-SQL 中的x IN ( 1, 2, 3 ) 运算符不是 数组类型,它只是( x = 1 OR x = 2 OR x = 3 ) 的语法简写。 T-SQL 不支持任何类型的数组类型(它确实有表值变量和参数,但不能用作列类型)。
  • 我正在使用 SQL Server 管理工作室
  • SSMS 不是 RDMBS,它是 SQL Server 和 Azure SQL 的前端工具。请熟悉一些基本的数据库术语,以免让您周围的每个人感到困惑。
  • 是的,我相信是 Microsoft SQL Server

标签: sql sql-server


【解决方案1】:
[Date of maturity month] - [Inforce date month] % 12 between 1 and 3

【讨论】:

  • 这很有魅力。我也在 E​​xcel 上尝试了各种输入的条件,并且它在每次测试运行下都返回正确的输出。谢谢!!
  • 如此强大,如此美丽的答案。模数我们的伟大之路!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 2013-08-18
  • 1970-01-01
相关资源
最近更新 更多