Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按需计算选择的常用方法?_Sql_Database_Relational Database - Fatal编程技术网

Sql 按需计算选择的常用方法?

Sql 按需计算选择的常用方法?,sql,database,relational-database,Sql,Database,Relational Database,我希望能够将列添加到一个表中,其中的单元格的值是在“查询时间”(可能)选择时根据需要计算的 有没有一些既定的方法可以做到这一点 编辑:好的,我可以不用“添加列”。我想要做的是做一个select查询,它搜索一些(如果存在)行并计算所有需要的值(一些函数),同时填充一些没有计算所有需要的值的行。因此,每个查询都会对数据进行一点扩展。 (某些列将以空值或类似值开头) 我想我会先做扩展部分,然后在使用select expression后进行查询,尤其是当您不打算存储计算结果,或者计算结果依赖于多个表时。

我希望能够将列添加到一个表中,其中的单元格的值是在“查询时间”(可能)选择时根据需要计算的

有没有一些既定的方法可以做到这一点

编辑:好的,我可以不用“添加列”。我想要做的是做一个select查询,它搜索一些(如果存在)行并计算所有需要的值(一些函数),同时填充一些没有计算所有需要的值的行。因此,每个查询都会对数据进行一点扩展。 (某些列将以空值或类似值开头)


我想我会先做扩展部分,然后在使用select expression后进行查询,尤其是当您不打算存储计算结果,或者计算结果依赖于多个表时。举个简单的例子:

SELECT id, (id+1) as next_id FROM table;

您想要什么类型的数据库?如果是SQL Server,则可以使用AS语法使用计算列。 例如:


在SQL世界中,向现有表中添加列通常代价高昂,因此我建议不要这样做。也许您可以通过以下方式进行管理:

如果您真的坚持要添加一个新列,您可以选择(未经测试):

基本上是
altertable
添加新列,然后对所有表执行
UPDATE
操作以设置新添加列的值

create table Test
(
Id int identity(1,1),
col1 varchar(2) default 'NO',
col2 as col1 + ' - Why?'
)
go

insert into Test
default values
go

select * from Test

drop table Test
SELECT OrderID, 
       ProductID, 
       UnitPrice*Quantity AS "Regular Price", 
       UnitPrice*Quantity-UnitPrice*Quantity*Discount AS "Price After Discount"
FROM order_details;
ALTER TABLE order_details ADD column_name datatype
UPDATE order_details SET column_name = UnitPrice+1