首先我很讨厌写存储过程,其次我很讨厌

没办法,主要是需要进行 行转列,项目经理说可以用Pivot。我不是很精通sql,但是我会百度呀~

pivot需要有确定的列名。那我这个项目里面没办法确定,最后问了gpt,使用动态sql(我以前也没用过),不过效果是我想要的,于是乎,改成存储过程吧。

简单的存储过程不难,其实以前我也会写,只是很久很久……似乎我工作之后就没用过,差不多就忘了……

小小总结一下

  1. 创建存储过程

    CREATE PROC(PROCEDURE ) FactoryCalendar
    //create 创建
    //proc(procedure是全称,proc就行)存储过程
    //FactoryCalendar 你的存过过程名字
  2. 可以传参或者不传参
    CREATE PROCEDURE FactoryCalendar
    @MD001 NVARCHAR(50)
    AS
    //定义的变量呢需要加@ 然后加个类型,代表参数类型
    //AS关键字主要在于将参数和存储过程主体分开,as下面你就知道存储过程开始了
  3. 接下来就是你要执行的sql了。一般begin开始end结尾。不多废话了。写个案例就知道了
-- 创建存储过程,获取资源组工作日历
CREATE PROCEDURE FactoryCalendar
@MD001 NVARCHAR(50)
AS
BEGIN
DECLARE @Columns AS NVARCHAR(MAX)
DECLARE @SQL AS NVARCHAR(MAX) -- 使用动态SQL生成资源名称的列名
SELECT @Columns = STRING_AGG(QUOTENAME(资源名称), ', ') WITHIN GROUP (ORDER BY 资源名称)
FROM (
SELECT DISTINCT MB.MB002 AS 资源名称
FROM BW_CMSMD CMD
INNER JOIN BW_MPSMB MB ON CMD.MD003 = MB.MB003
INNER JOIN BW_MPSMD MD ON MB.MB001 = MD.MD001
WHERE CMD.MD001 = @MD001
) AS ColName;
print @Columns;
-- 构建动态SQL查询
SET @SQL = '
SELECT *
FROM (
SELECT
MB.MB002 AS 资源名称,
CMD.MD001 AS 部门编号,
CMD.MD002 AS 部门名称,
MD.MD002 AS 日期,
MD.MD003 AS 当日产能
FROM BW_CMSMD CMD
INNER JOIN BW_MPSMB MB ON CMD.MD003 = MB.MB003
INNER JOIN BW_MPSMD MD ON MB.MB001 = MD.MD001
WHERE CMD.MD001 = ''' + @MD001 + '''
) AS SourceData
PIVOT (
MAX(当日产能)
FOR 资源名称 IN (' + @Columns + ')
) AS PivotedData;' -- 执行动态SQL查询
EXEC(@SQL);
END

  4.执行存储过程 :有参数就这么写,没有直接 exec FactoryCalendar

exec FactoryCalendar   '6875'

记一次简单的存储过程和Pivot行转列的更多相关文章

  1. SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行

    ylbtech-SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行 可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表.PIVOT 通过将表达式某一列 ...

  2. SQL Server中使用PIVOT行转列

    使用PIVOT行转列 1.建表及插入数据 USE [AdventureDB] GO /****** Object: Table [dbo].[Score] Script Date: 11/25/201 ...

  3. PIVOT行转列

    PIVOT通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合. 测试数据 INSERT INTO [TestRows2Columns] ...

  4. Sqlserver中PIVOT行转列透视操作

    创建表: IF OBJECT_ID('T040_PRODUCT_SALES') IS NOT NULL DROP TABLE T040_PRODUCT_SALES create table T040_ ...

  5. 动态PIVOT行转列

    id name subject score remark1 l math 86 2 l eng 68 3 l phy 88 4 z chn 99 5 z math 92 6 z com 98 7 z ...

  6. SqlServer PIVOT行转列

    PIVOT通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合. 测试数据 INSERT INTO [TestRows2Columns] ...

  7. MySQL存储过程的动态行转列

    MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...

  8. SQL Server 2008 R2——PIVOT 行转列 以及聚合函数的选择

    ==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...

  9. SQL Server pivot 行转列遇到的问题

    前段时间开发系统时,有个功能是动态加载列,于是就使用了SQL Server自带的PIVOT函数进行行转列,开始用的非常溜,效果非常好.但是提交测试后问题来了,测试添加的列名中包含空格,然后就杯具了,功 ...

  10. Oracle PIVOT 行转列方法

    数据库中業種的存储如下图: SELECT * FROM M_TORIHIKISAKI_GYOSYU 其中GYIUSYU_CD字段代表不同的業種 而画面需要实现下图所示样式:(将每条数据的業種横向展开显 ...

随机推荐

  1. Kali Linux 更新 一条命令搞定

    Kali Linux 更新 一条命令搞定 sudo apt-get update && sudo apt-get upgrade && sudo apt-get dis ...

  2. 云原生周刊:在 Kubernetes 集群中使用通配符证书 | 2024.2.19

    开源项目推荐 kube-fledged kube-fledged 是一个 Kubernetes Operator,用于直接在 Kubernetes 集群的工作节点上创建和管理容器映像的缓存.它允许用户 ...

  3. 云原生周刊:Dapr v1.11 发布

    开源项目推荐 Kamaji Kamaji 可以大规模地部署和运行 Kubernetes 控制平面,而只需承担一小部分操作负担.Kamaji 的特别之处在于,控制平面组件是在一个单一的 pod 中运行, ...

  4. 怎样替换 rhel 7.3 的 yum

    [背景] 想在自己安装的虚拟机上搭建一套 git+gitee+vscode 环境(欢迎看下期文章),发现python版本是2.7,这个版本太老 想通过yum进行更新,结果提示需要注册,索性就查查替换y ...

  5. 构建人工智能模型基础:TFDS和Keras的完美搭配

    上一篇:<数据工程师,转型人工智能岗位的理想时空通道> 序言:本节将带您深入探索 TensorFlow 提供的关键工具和方法,涵盖数据集管理和神经网络模型的构建与训练.在现代人工智能框架中 ...

  6. ubuntu系统下安装 steam 游戏平台

    方法1:安装命令: sudo snap install steam 方法2:下载安装: 地址: https://store.steampowered.com/about/

  7. debug指南-基础bug

    基础Bug 本章节主要阐述一些最基本的bug. 虽然这些bug看起来很弱智简单,但正是因为这些小bug,让我们调代码的时间增加至少 \(2,3\) 个小时. 本系列的宗旨就是综合这些小bug极其对应解 ...

  8. Node.js 构建命令行工具:实现 ls 命令的 -a 和 -l 选项

    在日常的前端开发中,我们常常借助各种基于 Node.js 的脚手架工具来加速项目搭建和维护,比如 create-react-app 可以一键初始化一个 React 项目,eslint 则帮助我们保持代 ...

  9. webpack 0-1 配置 以及 (性能优化)

    五大核心: 模式 production developmentmode: 'development', 入口entry: './src/js/index.js', loader的配置module: { ...

  10. 干货分享:开启PWM调光之门,一起来做呼吸灯

    PWM作为一种灵活且高效的信号调制手段,在电气设备的性能控制和调节中发挥着重要作用,常用于电机控制.灯光调光.音频信号生成.加热控制等应用. 本文将以合宙低功耗4G模组经典型号--Air780E为例, ...