0

次のようなテーブル出力があります。

srno billno particular Qty rate vat amount paid balance
 1     25     aaa       5   20   5    105   400   135
 2     25     qqq       5   50   5    225   400   135
 3     25     fff       10  20   5    205   400   135
 4     26     aaa       10  20   5    205   300   245
 5     26     fff       10  20   5    205   300   245    

しかし、私は次のような出力が必要です:

srno billno particular Qty rate vat amount paid balance
 1     25     aaa       5   20   5    105   400   135
              qqq       5   50   5    225         
              fff       10  20   5    205         
 2     26     aaa       10  20   5    205   300   245
              fff       10  20   5    205         

T-SQLselectコマンドを使用してこの出力を取得する方法...

4

1 に答える 1

1

ランキング関数row_number()dense_rank:を使用してこれを行うことができるはずです。

select 
  case when rn = 1 then cast(rnk as varchar(10)) else '' end srno,
  case when rn = 1 then cast(billno as varchar(10)) else '' end billno,
  [particular], 
  [Qty], 
  [rate], 
  [vat], 
  [amount], 
  case when rn = 1 then cast([paid] as varchar(10)) else '' end [paid], 
  case when rn = 1 then cast([balance] as varchar(10)) else '' end [balance]
from
(
  select [srno], [billno], [particular], [Qty], [rate], [vat], [amount], [paid], [balance],
    row_number() over(partition by billno order by srno) rn,
    dense_rank() over(order by billno) rnk
  from yourtable
) src;

SQL FiddlewithDemoを参照してください

結果は次のとおりです。

| SRNO | BILLNO | PARTICULAR | QTY | RATE | VAT | AMOUNT | PAID | BALANCE |
---------------------------------------------------------------------------
|    1 |     25 |        aaa |   5 |   20 |   5 |    105 |  400 |     135 |
|      |        |        qqq |   5 |   50 |   5 |    225 |      |         |
|      |        |        fff |  10 |   20 |   5 |    205 |      |         |
|    2 |     26 |        aaa |  10 |   20 |   5 |    205 |  300 |     245 |
|      |        |        fff |  10 |   20 |   5 |    205 |      |         |
于 2013-02-06T10:55:16.993 に答える