1

ここでは、データと結果データの間にユニオンクエリを使用して行を追加しようとしています。

select color, item, sum(qua) from inventory
Group by color, item
UNION
Select '----','----','----'
Union
select Count(color), 'total', sum(qua)
from inventory

結果は次のようになります。

ITME    COLOR   QUA
----    -----   ----
chair   Black   520
chair   pink    1028
chair   Red 1050
chair   Yellow  524
table   Black   1048
table   Blue    124
table   pink    624
table   Red 524
table   Yellow  548
-----   -----   -----    <----This extra row.
13  total   5990

上記のクエリを使用しましたが、データ型の不一致エラーが表示されます。varchar値'----'をデータ型intに変換するときに変換に失敗しました。Microsoft SQL Server Management StudioR22008を使用しています

4

4 に答える 4

5

いいえ、これを行うべきではありません。これを行うには、の値をvarcharにキャストする必要がありますsum(qua)が、これは悪い考えです。

線の描画は、プレゼンテーション層で処理する必要があります。

于 2012-08-31T21:47:09.613 に答える
1

UNION ALLの代わりに使用UNION

UNION UNIONコマンドは、JOINコマンドと同様に、2つのテーブルから関連情報を選択するために使用されます。ただし、UNIONコマンドを使用する場合は、選択したすべての列が同じデータ型である必要があります。UNIONでは、個別の値のみが選択されます。

UNION ALL UNION ALLコマンドは、UNION ALLがすべての値を選択することを除いて、UNIONコマンドと同じです。

参照

UNION ALL重複を削除する場合を除いて、常に使用する必要があります。

于 2012-08-31T22:01:10.010 に答える
0

これは、クエリウィンドウでのテストにのみ使用する必要があります。それ以外の場合は、MarkByersのアドバイスに従ってください。

select color, item, CAST(sum(qua) as VARCHAR) As QUA from inventory
Group by color, item
UNION ALL
Select '----','----','----'
UNION ALL
select CAST(Count(color) AS VARCHAR), 'total', CAST(sum(qua) AS VARCHAR)
from inventory
于 2012-08-31T21:54:20.473 に答える
0

ここには2つのことがあります。1つは、とのタイプsum(qua)'----'異なることです(数値とテキスト)。

select color, item, convert(nvarchar(30),sum(qua)) from inventory
Group by color, item
UNION
Select '----','----','----'
Union
select Count(color), 'total', sum(qua)
from inventory

2つ目は、SQLがSELECTの順序でデータを返すことを期待していることですが、そうではありません。組合からの列は任意の順序で来ることができます。必要な結果を得るには、注文のトリックが必要です。

select color, item, summary from
(
    select 0 as ToOrder, color, item, convert(nvarchar(30),sum(qua)) as summary from inventory
    Group by color, item
    UNION
    Select 1, '----','----','----'
    Union
    select 2, Count(color), 'total', sum(qua)
    from inventory
) as x
order by ToOrder asc
于 2012-08-31T21:58:25.887 に答える