同じテーブルに複数の列を持つデータがあります:
Col1 Col2 Col3 Col4 Col5 Col6
Col1 から Col3、Col3 から Col6、または Col1 から Col6 の合計をテーブルから取得したいのですが、これらの特定の列を選択する方法がわかりません。
同じテーブルに複数の列を持つデータがあります:
Col1 Col2 Col3 Col4 Col5 Col6
Col1 から Col3、Col3 から Col6、または Col1 から Col6 の合計をテーブルから取得したいのですが、これらの特定の列を選択する方法がわかりません。
ビューを作成できます:
CREATE VIEW dbo.col_sums_from_some_table
AS
SELECT
[Col1-3] = Col1 + Col2 + Col3,
[Col3-6] = Col3 + Col4 + Col5 + Col6,
[Col1-6] = Col1 + Col2 + Col3 + Col4 + Col5 + Col6
FROM dbo.table_name;
COALESCE
(これらの列が null 可能である場合は、@davek が指摘したようにそれらをラップする必要があります。)
次に、目的の列を直接選択するか、SUM() を適用するだけです。
SELECT [Col1-3] FROM dbo.col_sums_from_some_table;
SELECT SUM([Col1-6] FROM dbo.col_sums_from_some_table;
たとえば、テーブルに計算列を作成することもできます(ここではデータ型を推測しています):
ALTER TABLE dbo.table_name ADD [Col1-3]
AS CONVERT(INT, COALESCE(Col1, 0) + COALESCE(Col2, 0) + COALESCE(Col3, 0));
また、これらの計算列を永続化/インデックス化することも選択できます。
1 行の場合:
select col1 + col2 + col3 from mytable
(すべての列が数値であると仮定)
特定の列のすべての値を合計するには:
declare @sum int
set @sum = 0
select @sum = @sum + col1 from mytable
たとえば、列 1 と 2 のすべての行を合計します。
declare @sum int
set @sum = 0
select @sum = @sum + col1 + col2 from mytable
null を効果的に処理するには、coalesce 関数を使用できます。
declare @sum int
set @sum = 0
select @sum = @sum + coalesce(col1, 0) + coalesce(col2, 0) from mytable