tsql - SQL Server 2012 - Break apart a running total -
in sql server 2012 database have following table running total (runamount)
<table><tbody> <tr> <th>budataid</th> <th>bu</th> <th>accountnum</th> <th>category</th> <th>curramt</th> <th>bumonth</th> <th>buyear</th></tr> <tr> <td>1</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $9,700.00 </td> <td>1</td> <td>2015</td></tr> <tr> <td>2</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $19,437.00 </td> <td>2</td> <td>2015</td></tr> <tr> <td>3</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $29,560.00 </td> <td>3</td> <td>2015</td></tr> <tr> <td>4</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $38,465.00 </td> <td>4</td> <td>2015</td></tr> <tr> <td>5</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $48,584.00 </td> <td>5</td> <td>2015</td></tr> <tr> <td>6</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $59,654.00 </td> <td>6</td> <td>2015</td></tr> <tr> <td>7</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $67,900.00 </td> <td>7</td> <td>2015</td></tr> <tr> <td>8</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $77,699.00 </td> <td>8</td> <td>2015</td></tr> <tr> <td>9</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $87,486.00 </td> <td>9</td> <td>2015</td></tr> <tr> <td>10</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $97,000.00 </td> <td>10</td> <td>2015</td></tr> <tr> <td>11</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $99,687.00 </td> <td>11</td> <td>2015</td></tr> <tr> <td>12</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $1,200.00 </td> <td>1</td> <td>2015</td></tr> <tr> <td>13</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $2,400.00 </td> <td>2</td> <td>2015</td></tr> <tr> <td>14</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $3,600.00 </td> <td>3</td> <td>2015</td></tr> <tr> <td>15</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $4,654.00 </td> <td>4</td> <td>2015</td></tr> <tr> <td>16</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $6,538.00 </td> <td>5</td> <td>2015</td></tr> <tr> <td>17</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $7,277.00 </td> <td>6</td> <td>2015</td></tr> <tr> <td>18</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $8,400.00 </td> <td>7</td> <td>2015</td></tr> <tr> <td>19</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $9,609.00 </td> <td>8</td> <td>2015</td></tr> <tr> <td>20</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $10,658.00 </td> <td>9</td> <td>2015</td></tr> <tr> <td>21</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $12,055.00 </td> <td>10</td> <td>2015</td></tr> <tr> <td>22</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $12,900.00 </td> <td>11</td> <td>2015</td></tr></tbody></table>
i need break apart running amount monthly amounts table like
<table><tbody> <tr> <th>budataid</th> <th>bu</th> <th>accountnum</th> <th>category</th> <th>curramt</th> <th>bumonth</th> <th>buyear</th> <th>monthlyamt</th></tr> <tr> <td>1</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $9,700.00 </td> <td>1</td> <td>2015</td> <td> $9,700.00 </td></tr> <tr> <td>2</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $19,437.00 </td> <td>2</td> <td>2015</td> <td> $9,737.00 </td></tr> <tr> <td>3</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $29,560.00 </td> <td>3</td> <td>2015</td> <td> $10,123.00 </td></tr> <tr> <td>4</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $38,465.00 </td> <td>4</td> <td>2015</td> <td> $8,905.00 </td></tr> <tr> <td>5</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $48,584.00 </td> <td>5</td> <td>2015</td> <td> $10,119.00 </td></tr> <tr> <td>6</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $59,654.00 </td> <td>6</td> <td>2015</td> <td> $11,070.00 </td></tr> <tr> <td>7</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $67,900.00 </td> <td>7</td> <td>2015</td> <td> $8,246.00 </td></tr> <tr> <td>8</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $77,699.00 </td> <td>8</td> <td>2015</td> <td> $9,799.00 </td></tr> <tr> <td>9</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $87,486.00 </td> <td>9</td> <td>2015</td> <td> $9,787.00 </td></tr> <tr> <td>10</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $97,000.00 </td> <td>10</td> <td>2015</td> <td> $9,514.00 </td></tr> <tr> <td>11</td> <td>12</td> <td>aa</td> <td>n91</td> <td> $99,687.00 </td> <td>11</td> <td>2015</td> <td> $2,687.00 </td></tr> <tr> <td>12</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $1,200.00 </td> <td>1</td> <td>2015</td> <td> $1,200.00 </td></tr> <tr> <td>13</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $2,400.00 </td> <td>2</td> <td>2015</td> <td> $1,200.00 </td></tr> <tr> <td>14</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $3,600.00 </td> <td>3</td> <td>2015</td> <td> $1,200.00 </td></tr> <tr> <td>15</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $4,654.00 </td> <td>4</td> <td>2015</td> <td> $1,054.00 </td></tr> <tr> <td>16</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $6,538.00 </td> <td>5</td> <td>2015</td> <td> $1,884.00 </td></tr> <tr> <td>17</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $7,277.00 </td> <td>6</td> <td>2015</td> <td> $739.00 </td></tr> <tr> <td>18</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $8,400.00 </td> <td>7</td> <td>2015</td> <td> $1,123.00 </td></tr> <tr> <td>19</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $9,609.00 </td> <td>8</td> <td>2015</td> <td> $1,209.00 </td></tr> <tr> <td>20</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $10,658.00 </td> <td>9</td> <td>2015</td> <td> $1,049.00 </td></tr> <tr> <td>21</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $12,055.00 </td> <td>10</td> <td>2015</td> <td> $1,397.00 </td></tr> <tr> <td>22</td> <td>12</td> <td>bb</td> <td>n51</td> <td> $12,900.00 </td> <td>11</td> <td>2015</td> <td> $845.00 </td></tr></tbody></table>
i sure there windowing function in here somewhere not sure where. appreciated
sql 2012 has lag function can give previous runamount
. use , subtract current runamount
monthamt
select *, [runamount] - isnull(lag([runamount]) on (order [year], [month]),0) monthamt mytable
the isnull
give 0 value first row since there not previous record, return null.
Comments
Post a Comment