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

Popular posts from this blog

ruby - Trying to change last to "x"s to 23 -

jquery - Clone last and append item to closest class -

c - Unrecognised emulation mode: elf_i386 on MinGW32 -