【发布时间】:2014-10-21 04:57:27
【问题描述】:
SQL 新手,需要一些帮助。我正在尝试使用变量作为列标题,并在一定范围内迭代总和。这是下面的代码。
DECLARE @startmonth AS INT
DECLARE @endmonth AS INT
DECLARE @earnedpremiumyear AS INT
SET @startmonth = 200501
SET @endmonth = 200512
SET @earnedpremiumyear = 2005
WHILE @startmonth <= 201301
BEGIN
SELECT SUM(earnedpremium) AS @earnedpremiumyear
FROM dbo.Database
WHERE accountingmonth BETWEEN @startmonth AND @endmonth
AND earnedendingmonth BETWEEN @startmonth AND @endmonth
SET @startmonth = @startmonth + 100
SET @endmonth = @endmonth + 100
SET @earnedpremiumyear = @earnedpremiumyear + 1
END
我希望 SUM 的标题是赚取的保费年份,从 2005 年到 2013 年。运行此代码时,我收到此错误:
“@earnedpremiumyear”附近的语法不正确
所以我肯定是错误地调用了变量。有人可以帮忙吗?
另外,我该如何做到这一点,而不是为每年的总计创建一个表格,而总和都在一个表格的一列或一行中?
谢谢!
【问题讨论】:
-
首先,为您的详细问题和示例代码 +1。多亏了这一点,我们才能看到您的一般技能水平和目标。其次,按照您的要求为列创建动态名称通常不是一个好主意,并且会破坏关系数据库的一些最佳优势。将输出输入表格或其他系统变得非常困难。更好的方法是制作一个名为“年份”的第二列并在那里计算你的年份。我在下面推荐 AHiggins 的建议。
标签: sql-server tsql