我有一个包含很多列的表,我只需要根据那里的值选择其中的一些。我怎样才能写出这样的SELECT。
例如:仅选择所有行值总和 < 10 且 >= 10 的列...
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
这是你想要完成的吗?
根据您的原始描述(希望根据聚合函数的结果选择数据),您很可能希望使用 HAVING 子句。查看http://www.w3schools.com/sql/sql_have.asp了解更多信息。
也许是这样的?
Select Name
FROM TableName.Columns
WHERE
SELECT SUM(*) AS subtotal
FROM Name
WHERE subtotal >=10
如果你想在一个过程中创建动态 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