将值传递给存储过程 [英] Pass values to a stored Procedure

查看:70
本文介绍了将值传递给存储过程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hello Team 

Hello Team 

我是SQL服务器程序的新手 - 我有以下要求 

I'm new to SQL server procedures - I have below requirement 

选择A,B,C

select A, B , C

,如果日期< ='2018-01-31'然后0其他'999'为'2018_01',

, if date <='2018-01-31' then 0 else '999' as '2018_01',

,如果日期< ='2018-02-28'则0其他'999'为'2018_02'

, if date <='2018-02-28' then 0 else '999' as '2018_02'

,如果日期< ='2018-03-31'则0其他'999'为'2018_03'

, if date <='2018-03-31' then 0 else '999' as '2018_03'

来自TableA 

from TableA 

自动完成这项工作的最佳方法是什么,我正在考虑采用我们可以执行的程序以1个月为例开始:2015_01增量1直到我们达到12个月然后再添加年份等。任何人都可以给我示例代码。

What's the best way to automate this work , I'm thinking of going with a procedure where we can start with 1 month like example : 2015_01 increment 1 until we reach 12 month then add year etc . Can any one pls give me sample code to start with.

谢谢你
SQL

推荐答案

我发布了静态SQL

I posted the static SQL

选择A,B,C

,CASE WHEN dtcolumn< ='2018-01-31 '然后0其他'999'结束  as'2018_01' 

,CASE WHEN dtcolumn< ='2018-02-28'然后0其他'999'结束  as'2018_02' 

,CASE WHEN dtcolumn< ='2018-03-31'然后0其他'999'结束 作为'2018_03' 




来自TableA 

select A, B , C
, CASE WHEN dtcolumn <='2018-01-31' then 0 else '999' end  as '2018_01' 
, CASE WHEN dtcolumn <='2018-02-28' then 0 else '999' end  as '2018_02' 
, CASE WHEN dtcolumn <='2018-03-31' then 0 else '999' end  as '2018_03' 


from TableA 

但它看起来像是为了顺序要有动态列,你需要动态的sql 

BUT it looks like in order to have dynamic columns you need dynamic sql 

http://www.sommarskog.se/dynamic_sql.html#sp_executesql


这篇关于将值传递给存储过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆