2017-03-01 11 views
1

グループで行をサマリーに追加することはできますか?具体的には、以下の出力を探しています。Sqliteでカテゴリに基づいた要約行を追加する

メインテーブル

Client|Billing 
-------------- 
a  | 34 
a  | 27 
b  | 29 
b  | 27 
c  | 28 
c  | 37 

は、出力が似ているはずです:

Client|Billing 
-------------- 
a  | 34 
a  | 27 
Total | 61 
b  | 29 
b  | 27 
Total | 56 
c  | 28 
c  | 37 
Total | 65 

をここで最初の合計は、同様に、次の2人の合計は合計され、クライアントAの課金の合計ですクライアントbとcのそれぞれ。からMYDATA 組合すべて SELECT「合計」、合計(課金) から 課金、 選択キャストクライアント(VARCHAR(10)などのクライアント):私は以下のコードと要件の似たようなものを達成することができる午前

クライアント

によってMYDATAグループは、しかし、全行が、最後に来ている以下のような:(

Client|Billing 
    a |34 
    a |27 
    b |29 
    b |27 
    c |28 
    c |37 
Total |61 
Total |56 
Total |65 
+1

が、一般的に私はそれが事のアプリケーションコードのこの種を扱うのがベストだと思う:OrderNr列は、同じクライアントの他の行の後に合計をソートするために使用されます。 – Strawberry

+0

@Strawberry SQLiteにWITH ROLLUPはありません。 –

+0

正しい、sqliteは、ロールアップを使用する自由を提供していないので、私はこの種の要件に苦しんでいます。これは私にとって非常に緊急ですから、誰でも私を助けてください。 –

答えて

2

チェックこれ。

私は sqliteの

でmr.bhosaleの答え@に変換

+0

私にそれを行う別の方法を示してくれてありがとう。 concatコマンドはsqliteでは機能しませんが、以下のコードではタスクを実行できます。select * from mydata 共用体 select(クライアント|| '合計))クライアント、sum(請求)sum from mydata グループbyクライアント クライアントby –

+0

@ayushvarshney私はあなたがSQLLIteを使用していることを逃した。しかし、あなたが作成したロジックは同じですが正しいです。依然としていつでも助けてください。 HND –

0

は正しく "合計" 欄を注文するには、この

select * from table_name 
    union 
    select Client || '_Total' Client ,SUM(Billing)sum from table_name 
    group by Client 
    order by Client 
-1
select * from mydata 
    union 
    select (Client ||'_Total') Client ,SUM(Billing)sum from mydata 
    group by Client 
    order by Client 
+2

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)はあなたの投稿の質を改善するのに本当に役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 –

0

を試してみてください、あなたがするようにクライアント名を維持する必要があります後でそれを並べ替えることができます。あなたはROLLUPで使用できる

SELECT DisplayName AS Client, 
     Billing 
FROM (SELECT Client AS DisplayName, 
      Client, 
      Billing, 
      1 AS OrderNr 
     FROM MyTable 

     UNION ALL 

     SELECT 'Total', 
      Client, 
      sum(Billing), 
      2 AS OrderNr 
     FROM MyTable 
     GROUP BY Client) 
ORDER BY Client, 
     OrderNr; 
関連する問題