我有一个表有很多列,我只需要选择其中的一些取决于那里的价值。我该如何编写这样的SELECT。动态列选择取决于它的值
例如:只有拥有其所有行的总和SELECT列的值< 10和那些> = 10选择的...
我有一个表有很多列,我只需要选择其中的一些取决于那里的价值。我该如何编写这样的SELECT。动态列选择取决于它的值
例如:只有拥有其所有行的总和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
这是你在努力完成什么?
我觉得你不是很想我 – Alexander
我需要根据一些条件从表中选择可变数量的列!所以每次我执行这个选择我得到不同数量的列! – Alexander
你需要在你的问题中包含wayyyy更多的信息 – tkendrick20
从您的原始描述(希望根据聚合函数的结果选择数据),您很可能想要使用HAVING子句。看看http://www.w3schools.com/sql/sql_having.asp了解更多信息。
也许是这样的?
Select Name
FROM TableName.Columns
WHERE
SELECT SUM(*) AS subtotal
FROM Name
WHERE subtotal >=10
如果你想创建动态的sql f.e.你可以使用一个程序sp_executesql
因此,你必须建立你的选择作为字符串/ varchar,并用您的选择字符串和输入/输出参数调用sp_executesql。
这是用于ms sql服务器。还有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
你能提供表模式和一些数据,你尝试过什么.. !!! –