Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 从表中检索特定列和_Sql Server 2008_Select_Filter_Aggregate Functions_Calculated Columns - Fatal编程技术网

Sql server 2008 从表中检索特定列和

Sql server 2008 从表中检索特定列和,sql-server-2008,select,filter,aggregate-functions,calculated-columns,Sql Server 2008,Select,Filter,Aggregate Functions,Calculated Columns,我在同一个表中有几列数据: Col1 Col2 Col3 Col4 Col5 Col6 我想从表中检索从Col1到Col3、从Col3到Col6或从Col1到Col6的总和,但是我不知道如何选择这些特定列。对于单行: select col1 + col2 + col3 from mytable (假设所有列都是数字) 对于特定列的所有值求和: declare @sum int set @sum = 0 select @sum = @sum + col1 fro

我在同一个表中有几列数据:

Col1    Col2    Col3    Col4    Col5    Col6
我想从表中检索从Col1到Col3、从Col3到Col6或从Col1到Col6的总和,但是我不知道如何选择这些特定列。

对于单行:

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
要有效处理空值,可以使用coalesce函数:

declare @sum int
set @sum = 0

select @sum = @sum + coalesce(col1, 0) + coalesce(col2, 0) from mytable
对于单行:

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
要有效处理空值,可以使用coalesce函数:

declare @sum int
set @sum = 0

select @sum = @sum + coalesce(col1, 0) + coalesce(col2, 0) from mytable

您可以创建一个视图:

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;
(如果这些列可以为空,则需要使用@davek指出的
COALESCE
来包装这些列。)

然后,您可以直接选择要查找的列或应用SUM():

您还可以在表上创建计算列,例如(我在这里猜测数据类型):


您还可以选择对这些计算列进行持久化/索引

您可以创建一个视图:

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;
(如果这些列可以为空,则需要使用@davek指出的
COALESCE
来包装这些列。)

然后,您可以直接选择要查找的列或应用SUM():

您还可以在表上创建计算列,例如(我在这里猜测数据类型):


您还可以选择对这些计算列进行持久化/索引

你能展示样本数据、期望的结果以及你将如何决定你想要1-3、3-6还是1-6吗?你能展示样本数据、期望的结果以及你将如何决定你想要1-3、3-6还是1-6吗?谢谢亚伦:)好的,年份是2007年、2008年、2009年、2010年,列有销售数据,我想选择具体年份。。。。。我将把参数传递给存储过程,并根据它,我将在where条件下决定选择ps:我用数字连接这些列,这样我就知道如果我想说第1-5列或第2-6列,第1列=1997列第2列=1998列。。。如有任何建议,请按照我之前的要求显示样本数据和所需结果。现在,这可能需要一个pivot来完成,也可能需要动态SQL。对你要做的事情有一个更明确的理解(不引入单词问题)会使你更容易解决问题。请阅读:谢谢亚伦:)你有几个月的数据表,你想选择一个特定的时期。。。。。。。。要选择sum(month1+month2)或sum(month1+month2+month3)或sum(month2+month3+month4)数据的最终结果如下所示:X1(month1+month2总计)=30。。。。etc@user1691071请更新您的问题。没有人会阅读评论中的“数据”。我只是不知道从表中选择某个句点的语法是什么。。。。请注意,您完全理解我,并在“创建视图”中为我提供了一个有用的解决方案。。。。。。。。。。。。。。感谢您的帮助谢谢Aaron:)好的,年份是2007年2008年2009年2010年,列有销售数据,我想选择具体年份。。。。。我将把参数传递给存储过程,并根据它,我将在where条件下决定选择ps:我用数字连接这些列,这样我就知道如果我想说第1-5列或第2-6列,第1列=1997列第2列=1998列。。。如有任何建议,请按照我之前的要求显示样本数据和所需结果。现在,这可能需要一个pivot来完成,也可能需要动态SQL。对你要做的事情有一个更明确的理解(不引入单词问题)会使你更容易解决问题。请阅读:谢谢亚伦:)你有几个月的数据表,你想选择一个特定的时期。。。。。。。。要选择sum(month1+month2)或sum(month1+month2+month3)或sum(month2+month3+month4)数据的最终结果如下所示:X1(month1+month2总计)=30。。。。etc@user1691071请更新您的问题。没有人会阅读评论中的“数据”。我只是不知道从表中选择某个句点的语法是什么。。。。请注意,您完全理解我,并在“创建视图”中为我提供了一个有用的解决方案。。。。。。。。。。。。。。谢谢你的帮助