sql - 如何从sql中YYYYMM格式的字符串列表中获取一个月?
问题描述
我有一个由逗号分隔的YYYYMM格式字符串列表
('202001', '202003', '202012')
我想将其转换为表格中的每一行。
monthNumber
-----------
Month1
Month3
Month12
我知道如何处理一个字符串而不是列表。
select CONCAT('Month', (datepart(month,('200602')+'01'))) as monthNumber.
更新的问题:
有没有办法将字符串列表转换为表中的每一行?根据@Gordon Linoff的评论,如果 SQL SERVER 不支持它,除了WHERE IN
子句。SQL Server 中有什么魔法可以将WHERE IN
子句值转换为表中的每一行?任何帮助,将不胜感激。
解决方案
首先,您需要将该字符串“列表”转换为可用的东西。你如何做到这一点决定了源数据/“列表”的格式
最简单的方法之一:
SELECT *
FROM (
VALUES ('202001'), ('202003'), ('202012')
) AS monthInfo(strDate)
然后只得到月份数
select CONCAT('Month', (datepart(month,(mi.strDate)+'01'))) as monthNumber
from monthInfo mi
推荐阅读
- c - Ubuntu 和 CentOS 之间链接行为的差异
- apache-spark - 如何知道流式查询用于 Kafka 数据源的 Kafka 消费者组的名称?
- angular - 将数组与来自另一个数组角度 ts 的外部 id 连接起来
- c++ - VS2017:删除移动构造函数时复制构造函数不起作用
- reactjs - 打字稿声明合并以扩展或覆盖模块类型或接口属性
- python - 使用 Dataset API 和 Keras 编写 summary.scalar
- android - 如何将数据从混合应用程序传递到本机应用程序?
- laravel - 如何为自定义面包生成器显示 Laravel voyager 侧边栏(添加帖子)
- c++ - 仅生成零的犰狳随机数生成器(Windows、MSYS2)
- pagespeed - PageSpeed Insights:同一站点的页面/测试运行之间的结果不一致(推迟屏幕外图像)