这里有很多关于将列命名为变量的问题,我不相信这是一个副本,因为我想使用计算。
我想在上个月之后命名我的专栏。我希望这可行:
SELECT isnull(sum(CASE when datepart(mm,rc.datetime) = DATEPART(MONTH, GETDATE()) -1 then 1 else null end),0) AS datename(MM, dateadd(MM, -1, getdate()))
或为了便于阅读:
... AS datename(MM, dateadd(MM, -1, getdate()))
但它没有,我得到一个不正确的语法错误。这可以实现吗?提前感谢您提供的任何帮助。
答案 0 :(得分:2)
尝试使用动态sql,
DECLARE @sql NVARCHAR(max) = ''
SET @sql = 'SELECT isnull(sum(CASE
WHEN datepart(mm, rc.DATETIME) = ' + convert(VARCHAR(10), DATEPART(MONTH, GETDATE())) + ' - 1
THEN 1
ELSE NULL
END), 0) AS ' + datename(MM, dateadd(MM, - 1, getdate()))
EXEC sp_executesql @sql
答案 1 :(得分:2)
根据评论,只能使用动态sql实现:
var getNewsPerson = function() {
$.ajax({
url:"http://website/api/v1/api?pid=" + personId,
type:"get",
success:function(res) {
return_tagname(res);
processPerson(res);
}
});
};
function processPerson(data) {
var returnedFeedShortcode = return_tagname(data);
var head =
'<div class="headForPerson-nt">' +
'<div class="hfpm-NextPerson-nt">' +
'<div class="hfpm-header-nt">' + data[0][0].FirstName + '</div>' +
'<div class="hfpm-ng-one-nt">' + data[0][0].LastName + '</div>' +
'</div>' +
'<div class="hfpm-News-nt">' +
'<div class="hfpm-header-nt">In the News</div>' + returnedFeedShortcode +
'</div>' +
'</div>';
$('#personPageHead-nt').html(head);
}
$(document).ready(function() {
if($('#personPageHead-nt').length) {
getNewsPerson(location.search);
}
});
function return_tagname(data) {
var tagname = data[0][0].FirstName + '+' + data[0][0].LastName;
return do_shortcode('[rss feed="http://website/tag/' + tagname + '/feed/" num="3"]');
};