我有一个包含很多列的表,我需要根据其值选择其中一些列。我怎么能写这样的SELECT。
例如:SELECT列仅包含其所有行值的总和<选择10和> = 10的那些......
答案 0 :(得分: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
这是你想要完成的吗?
答案 1 :(得分:0)
从原始描述(想要根据聚合函数的结果选择数据),您很可能想要使用HAVING子句。有关详细信息,请查看http://www.w3schools.com/sql/sql_having.asp。
答案 2 :(得分:0)
也许是这样的?
Select Name
FROM TableName.Columns
WHERE
SELECT SUM(*) AS subtotal
FROM Name
WHERE subtotal >=10
答案 3 :(得分:0)
如果你想创建动态sql f.e.在程序中,您可以使用sp_executesql
因此,您必须将select构建为字符串/ varchar,并使用您的choosetring和in / out参数调用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;
http://data.stackexchange.com/stackoverflow/revision/126004/154483/dynamic-sql