这听起来有点棘手。我有一张表,从2012年1月到2015年3月有列。每个月都有它自己的专栏。
我正在创建一个循环查询,它会计算每位医生过去12个月的总访问次数。所以基本上它做了类似的事情,但更多涉及。
Declare @StartDate as Date = '20110101'
Declare @EndDate as Date = Dateadd(mm, 12, @Startdate)
Declare @Column as VarChar(15) = DateName(MM, @EndDate) + DateName(YY, @EndDate)
Create Table #Final
(
DoctorID Int
January2012 Int
February2012 Int
March2012 Int
....
)
Select
DoctorID
Count(InvoiceID) Over (Partition By HospitalID, DoctorID) as CountofVisits
From
Invoice
现在我要做的是根据结束日期将访问次数插入到正确的列中。此查询将循环显示该时间段的每个月。
谢谢,
答案 0 :(得分:0)
您需要在执行查询之前指定要插入的列,这意味着您已经遗憾地进入了动态SQL领域。动态SQL的工作原理是将变量设置为等于文本字符串,然后对变量使用exec命令。这不是火箭科学,但它可能更多的解释,舒适地适应堆栈溢出的答案。幸运的是,Pinal Dave已经解释过了,并且可能比我能做得更好:
你正在寻找的答案大约是页面的一半,但我建议阅读整篇文章,因为它非常有用。
作为公平警告,动态sql通常会对性能产生影响,当与循环结合使用时,您可能正在寻找能够让DBA关注的东西。