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请更新您的问题。没有人会阅读评论中的“数据”。我只是不知道从表中选择某个句点的语法是什么。。。。请注意,您完全理解我,并在“创建视图”中为我提供了一个有用的解决方案。。。。。。。。。。。。。。谢谢你的帮助