2

こんにちは、列を持つテーブルがあります

              Cost     Rate

              Repair   12
              Repair   223
              Wear     1000    
              Wear     666
              Fuel     500
              Repair   600
              Fuel     450
              Wear     400

今、私はこのデータを

             Repair    Wear   Fuel
               825     2066    950

SQL クエリの使用

前もって感謝します

4

7 に答える 7

4
select sum(case when cost = 'Repair' then rate else null end) as Repair
, sum(case when cost = 'Wear' then rate else null end) as Wear
, sum(case when cost = 'Fuel' then rate else null end) as Fuel 
from CostRateTable
于 2009-06-26T05:31:35.060 に答える
1

必要な「回転」(行を列にする) は、SQL Server のPIVOT演算子で取得できます。

于 2009-06-26T05:40:17.420 に答える
1

Dynamic PivotingまたはDynamic Cross-Tabsを実行する方法を探していると思います。

次の記事を確認してください。

于 2009-06-26T05:41:53.393 に答える
0

PIVOTこれは、関数を使用した簡単なクエリです。列に変換されることがわかっている値がいくつかある場合は、静的バージョンを使用できます。

create table yourtable
(
  cost varchar(10),
  rate int
);

insert into yourtable values
('Repair', 12),
('Repair', 223),
('Wear', 1000),
('Wear', 666),
('Fuel', 500),
('Repair', 600),
('Fuel', 450),
('Wear', 400);

select *
from
(
  select cost, rate
  from yourtable
) x
pivot
(
  sum(rate)
  for cost in ([Repair], [Wear], [Fuel])
) p;

値の数が不明な場合は、動的 SQL を使用して動的ピボットを作成できます。

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(cost) 
                    from yourtable
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')


set @query = 'SELECT ' + @cols + ' from 
             (
              select cost, rate
              from yourtable
            ) x
            pivot 
            (
                sum(rate)
                for cost in (' + @cols + ')
            ) p '

execute(@query)

SQL Fiddle with Demoを参照してください。どちらも同じ結果になります。

于 2012-09-21T03:20:17.803 に答える
0

これは、単純なクロス集計クエリで実行できます。[アクセス クエリ] ウィンドウにはウィザードがあり、ウィザードを使用してクエリを作成できます。[新しいクエリ] ボタンをクリックして、クロス集計クエリ ウィザードを選択するだけです。

于 2009-07-13T04:13:15.297 に答える
0

GROUP BYのような集計関数を使用すると、結果を結合するために使用できますSUM()

SELECT Cost, SUM(Rate) FROM MyTable GROUP BY Cost

これにより、要求した結果とは逆の結果が返されますが、それは大したことではないはずです。

コストSUM(レート)
--- ---
修理 825
2066を着用
燃料 950
于 2009-06-26T05:31:13.890 に答える
0

コストごとにテーブル名グループからコスト、合計(レート)を選択

于 2009-06-26T05:33:22.297 に答える