将值传递给存储过程 [英] Pass values to a stored Procedure
问题描述
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屋!