0

我有一个包含很多列的表,我只需要根据那里的值选择其中的一些。我怎样才能写出这样的SELECT。

例如:仅选择所有行值总和 < 10 且 >= 10 的列...

4

4 回答 4

0
SELECT SUM(column1), SUM(column2), SUM(column3)
INTO #temptable
FROM TableName
GROUP BY column1, column2, column3

SELECT column1
FROM #temptable
WHERE column1 < 10

或者

SELECT column1
FROM #temptable
WHERE column1 >= 10

这是你想要完成的吗?

于 2013-07-26T14:30:29.197 回答
0

根据您的原始描述(希望根据聚合函数的结果选择数据),您很可能希望使用 HAVING 子句。查看http://www.w3schools.com/sql/sql_have.asp了解更多信息。

于 2013-07-26T14:33:48.407 回答
0

也许是这样的?

Select Name
FROM TableName.Columns
WHERE
  SELECT SUM(*) AS subtotal
  FROM Name
  WHERE subtotal >=10
于 2013-07-26T14:37:01.430 回答
0

如果你想在一个过程中创建动态 sql fe,你可以使用sp_executesql

因此,您必须将您的选择构建为字符串/varchar,并使用您的选择字符串和输入/输出参数调用 sp_executesql。

这是针对 ms sql server 的。oracle和其他数据库也有程序。

DECLARE @SQLString nvarchar(500); /* dynamic sql string */
DECLARE @customer_id int; /* input variable */
DECLARE @name varchar(30); /* output variable */
DECLARE @ParmDefinition nvarchar(500); /* connection for binding variables */


SET @customer_id= 197; 

/* Add your condition here to build different select strings */
SET @SQLString = N'SELECT @name_out = name
   FROM customers
   WHERE cusomersid = @custid_in';

SET @ParmDefinition = N'@custid_in tinyint, @name_out varchar(30) OUTPUT';

EXECUTE sp_executesql @SQLString, @ParmDefinition, @custid_in = @customer_id, @name_out = @name  OUTPUT;
SELECT @name;

https://data.stackexchange.com/stackoverflow/revision/126004/154483/dynamic-sql

于 2013-07-26T14:49:09.010 回答