SQL Server 2008 - 查询以分数格式获取结果

2023-12-01

我有一个包含这样的数据的表:

MinFormat(int)  MaxFormat(int)  Precision(nvarchar)
   -2              3             1/2

精度值只能是 1/2、1/4、1/8、1/16、1/32、1/64。

现在我想要查询结果为 -

 -2
 -3/2 
 -1 
 -1/2 
  0 
  1/2 
  1 
  3/2  
  2 
  5/2 
  3

有什么查询可以得到如下结果吗?

想法是根据精度值根据最小边界(最小格式列值是整数)到最大边界(最大格式列值是整数)创建结果。

因此,在上面的示例中,值应该从 -2 开始,并根据精度值 (1/2) 生成下一个值,直到达到 3


请注意,这仅适用于精度 1/1、1/2、1/4、1/8、1/16、1/32 和 1/64

DECLARE @t table(MinFormat int, MaxFormat int, Precision varchar(4))
INSERT @t values(-2, 3, '1/2')

DECLARE @numerator INT, @denominator DECIMAL(9,7)
DECLARE @MinFormat INT, @MaxFormat INT

-- put a where clause on this to get the needed row

SELECT @numerator   = 1,
       @denominator = STUFF(Precision, 1, charindex('/', Precision), ''),
       @MinFormat = MinFormat,
       @MaxFormat = MaxFormat
FROM @t


;WITH N(N)AS 
(SELECT 1 FROM(VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1))M(N)),
tally(N)AS(SELECT ROW_NUMBER()OVER(ORDER BY N.N)FROM N,N a,N b,N c,N d,N e,N f)
SELECT top(cast((@MaxFormat- @MinFormat)  / (@numerator/@denominator) as int) + 1) 
CASE WHEN val % 1 = 0 THEN cast(cast(val as int) as varchar(10))
     WHEN val*2 % 1 = 0 THEN cast(cast(val*2 as int) as varchar(10)) + '/2'
     WHEN val*4 % 1 = 0 THEN cast(cast(val*4 as int) as varchar(10)) + '/4'
     WHEN val*8 % 1 = 0 THEN  cast(cast(val*8 as int) as varchar(10)) + '/8'
     WHEN val*16 % 1 = 0 THEN cast(cast(val*16 as int) as varchar(10)) + '/16'
     WHEN val*32 % 1 = 0 THEN cast(cast(val*32 as int) as varchar(10)) + '/32'
     WHEN val*64 % 1 = 0 THEN cast(cast(val*64 as int) as varchar(10)) + '/64'
END
FROM tally
CROSS APPLY
(SELECT @MinFormat +(N-1) *(@numerator/@denominator) val) x
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 2008 - 查询以分数格式获取结果 的相关文章

随机推荐

  • Ajax.BeginForm OnBegin 确认 通过 jquery modal

    我正在使用 jQuery UI 对话框 我有一个删除表单如下 using Ajax BeginForm DeleteUser Administrator new id Model new AjaxOptions OnSuccess Dele
  • MariaDB 的 Hibernate 命名策略 (UPPER_SNAKE_CASE)

    在我的应用程序中 我使用 Flyway 进行数据迁移 因此我定义了所有名称为UPPER SNAKE CASE 例如用户 gt USERS 候选组 gt CANDIDATE GROUP 我为不同的环境提供了2种配置 本地和docker 在本地
  • php:使用cURL获取html源代码

    我怎样才能得到html源代码http www example webpage com file html不使用file get contents 我需要知道这一点 因为在某些网络主机上allow url fopen已禁用 因此您无法使用fi
  • 如何修复在 Windows 上运行 Npm 时出现 SSL 证书错误?

    当我尝试使用 npm 安装软件包时 它不起作用 经过漫长的等待 我最终得到一个错误 无法建立隧道套接字 sutatusCode 403 npm install coffee script npm http GET https registr
  • Python tkinter AskopenFileName 没有响应

    我正在使用 tkinter asopenfilename 触发文件选择器 以便从本地目录读取文件 我的问题是 选择文件后 窗口冻结并且 python 没有响应 我已经尝试过这篇文章的答案 Tkinter Askopenfilename 不会
  • Oracle中如何检查索引是否被使用

    SELECT FROM SELECT TEMP ROWNUM RNUM FROM SELECT entry guid FROM alertdevtest ENTRY WHERE Upper alert name alertname AND
  • CSS 背景图像属性未加载

    我正在开发一个网站 目前位于主页上 我有一个以前编写的 CSS 标头 并且想用图像替换标头的背景 div 而不是像之前的设计那样采用纯色 我有一个标题图片 在img header jpg目录 我正在使用加载背景图像background im
  • 如何在Excel VBA中将值从数组传递到特定单元格(不是组合列表)中的下拉列表

    我正在尝试将值从数组传递到特定单元格中的下拉列表 假设我有一个包含值 1 2 3 的数组 并且我希望单元格 A1 包含一个包含这些值的下拉列表 有什么方法可以做到这一点吗 我试图实现这一目标 而不必首先将这些值分配给不同的单元格并使用数据验
  • 将 Ipopt 与英特尔 MKL 链接

    我正在尝试将 Ipopt 与 Intel MKL 链接起来 指示 英特尔的链接顾问建议 链接线 Wl start group MKLROOT lib intel64 libmkl intel ilp64 a MKLROOT lib inte
  • 交错文本文件内容的最 Pythonic 方式是什么?

    Python问题 如果我有一个文件列表 如何打印每个文件中的第 1 行 然后 第 2 行等 显然我是一个Python新手 Example file1 foo1 bar1 file2 foo2 bar2 file3 foo3 bar3 函数调
  • ArrayList容量增量方程

    在JDK 1 7中引入了ArrayList java中的方法ensureCapacity使用以下表达式增加数组容量 int newCapacity oldCapacity oldCapacity gt gt 1 看来新产能将比旧产能增加近5
  • 在链式构造函数中设置只读字段

    我有一个类 其中有两个在构造函数中设置的只读字段 我有一个派生类 希望将它们设置为不同的构造函数中的值 但是 尝试这样做会导致 CS1091 无法将只读字段分配给 构造函数或变量初始值设定项除外 错误 我不明白这是为什么 我am分配给构造函
  • Django:记录模板错误

    当我在 django 模板中出错时 placeholder 我没有收到任何错误 只是输出中我期望内容的空白 发生这种情况时 有没有办法在我的日志中查看某些内容 最好使用logging warning or logging error 就在这
  • 批量-用百分比符号替换

    我想用 替换字符串中的 mod set string string mod x 我应该输入什么作为 x 您可以通过启用延迟扩展来做到这一点 这样您就可以使用 作为分隔符 然后 将百分号加倍可以将百分比表示为替换字符 echo off set
  • Sitecore页面编辑器-如何扩展页面编辑器项目编辑面板

    需要在页面编辑器 项目编辑部分添加 发布 功能 在 更多 部分下是理想的 我怎样才能做到这一点 首先您需要创建一个命令类 最简单的版本是 using System using Sitecore Shell Applications WebE
  • 当逻辑条件意味着不应评估输出时,为什么 dplyr 会在此嵌套 if_else 中出错?

    我有一个嵌套的if else里面的声明mutate 在我的示例数据框中 tmp df2 lt data frame a c 1 1 2 b c T F T c c 1 2 3 a b c 1 1 TRUE 1 2 1 FALSE 2 3 2
  • 使用 SSO facebook 的故事链接流 - openURL 未被调用

    我已经在我的 iOS 4 3 应用程序中成功实现了单点登录 现在我想发布一个到用户 Facebook 墙的链接 这样当他 她也拥有该应用程序的朋友单击该链接时 他们应该被重定向到我的应用程序 我的解读方式http developers fa
  • 您可以将保留计数发送到 NSLog 以帮助学习吗?

    只是好奇是否有办法使用 NSLog 显示对象保留计数 我只想将它们打印到控制台以帮助了解保留 释放在一些简单代码中是如何工作的 干杯 加里 这不仅是可能的 而且也非常简单 NSLog retain count d obj retainCou
  • 检查字符串中是否存在元音

    我需要检查单词中是否存在元音 如果是 则应对单词 say 进行操作op word 我想避免 for 循环 因为我想到了这一点 for char in word if char in aeiou confused here 请推荐一种在执行时
  • SQL Server 2008 - 查询以分数格式获取结果

    我有一个包含这样的数据的表 MinFormat int MaxFormat int Precision nvarchar 2 3 1 2 精度值只能是 1 2 1 4 1 8 1 16 1 32 1 64 现在我想要查询结果为 2 3 2