在一个表中,我有从 2014 年到 2050 年的列。如果我想编写一个查询,该查询将返回基于参数的范围之间的列,这可能吗?它变得更加棘手,因为为了让它接受列名作为数字,它们被存储为字符串,因此必须在比较之前对其进行强制转换。Tenor_End 和 Tenor_Start 是整数(2014、2015 ... 2050)
Select *
From MMD_Scale
WHERE (@Tenor_End IS NULL and CAST(c.Name AS INT) >= @Tenor_Start) OR
(@Tenor_Start IS NULL and CAST(c.Name AS INT) <= @Tenor_End) OR
(@Tenor_Start IS NOT NULL AND @Tenor_End IS NOT NULL
AND CAST(c.Name AS INT) >= @Tenor_Start
AND CAST(c.Name AS INT) <= @Tenor_End) OR
(@Tenor_Start IS NULL
AND @Tenor_End IS NULL
AND CAST(c.Name AS INT) IS NOT NULL)
这是我从在线资源拼凑而成的,但 c.Name 不是用于引用列名的内置内容。选择后我也尝试了类似的逻辑,但无济于事。任何建议表示赞赏。
Microsoft SQL 查询正在 SSRS 中运行。桌子看起来像
Date | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 |
-------------------------------------------------------------
8/2/2013 | .1 | .9 | 1.7 | 2.0 | 2.5 | 1.1 | .1 |
8/6/2013 | .6 | 1.2 | 2.2 | 1.2 | 3.2 | 1.9 | .8 |
我想显示所有行但一系列列,即 2014 年到 2017 年之间