sql - SQL根据if语句添加列
问题描述
我有一个包含 4 个字符 (col1) 的表格,我想:
- 分成两半
- 使用 if 语句将左侧 2 个字符重新编码为特定整数
- concat left 到 rght(用'.'分隔)以生成下面的 fin 列。
col1 | 剩下 | 对 | 鳍 |
---|---|---|---|
xx01 | xx | 01 | 01.1 |
xy01 | xy | 01 | 01.2 |
xz01 | xz | 01 | 01.3 |
有点 SQL 菜鸟所以感谢任何建议。谢谢!
解决方案
由于 col1 长度是 4 位固定的,所以这里的一半表示 2 位。您可以对 col1 的完整值或 LEFT(col1, 2) 执行 ORDER BY 操作。
-- SQL SERVER
SELECT col1, LEFT(col1, 2) "left"
, RIGHT(col1, 2) "right"
, RIGHT(col1, 2) + '.' + CAST((ROW_NUMBER() OVER (ORDER BY col1)) AS VARCHAR(2)) fin
FROM test
请从网址https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=d76d9c504472f93ed3e4c53b88b94f57检查
使用 CASE 语句
SELECT col1, LEFT(col1, 2) "left"
, RIGHT(col1, 2) "right"
-- , RIGHT(col1, 2) + '.' + CAST((ROW_NUMBER() OVER (ORDER BY col1)) AS VARCHAR(2)) fin
, RIGHT(col1, 2) + '.' + CASE LEFT(col1, 2) WHEN 'xx' THEN '1' WHEN 'xy' THEN '2' ELSE '3' END fin
FROM test
请从网址https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=a1f10444fd50c9c1c541c49d8f23344f检查
推荐阅读
- amazon-web-services - 使用 spark 处理超大容量(500TB)数据
- asp.net-core - .NET Core 2 基准测试,req/s 远低于预期
- tfs - EF Core 和 Visual Studio 2017:添加迁移不将新文件包含到 TFS 源代码控制中
- coldfusion - 变量 CFUSION_ENCRYPT 未定义
- php - PHP exec python 并获取包含汉字的返回数组
- php - 如何在没有文件扩展名的情况下显示 img
- c# - How to create CombinedGeometry for ellipse and line
- sql-server - IIS 8.5 自定义字段破坏了 LogParser 2.2
- azure - 检查 Azure 自动化运行手册 (PowerShell) 运行位置的方法是什么?
- css - 为焦点创建一个与浏览器无关的或 IE 备用内部按钮边框?(可访问性相关)