我想知道 SQL Server 中是否有一個函式或 Azure 中的服務可以提供將多個查詢組合為一個的機會。例如,
ALTER TABLE1
ADD RetailValue AS (CAST(QtyAvailable AS int) * CAST(UnitPrice AS int) * 1.5);
ALTER TABLE2
ADD RetailValue AS (CAST(QtyAvailable AS int) * CAST(UnitPrice AS int) * 1.5);
ALTER TABLE3
ADD RetailValue AS (CAST(QtyAvailable AS int) * CAST(UnitPrice AS int) * 1.5);
...
有沒有辦法將所有這些組合成一個可以影響所有表的查詢?每個表的列都是相同的,只是有太多表需要復制和粘貼。
謝謝!
uj5u.com熱心網友回復:
使用動態 SQL,您可以構造所需的alter陳述句并將它們聚合成單個字串以執行:
declare @Sql nvarchar(max);
select @Sql = String_Agg(
'alter table dbo.' QuoteName([name]) ' ADD RetailValue AS (CAST(QtyAvailable AS int) * CAST(UnitPrice AS int) * 1.5); '
,'')
from sys.tables where name in ('table1','table2', 'table3')
and schema_id = Schema_Id('dbo');
print @Sql;
exec (@Sql);
查看演示小提琴
uj5u.com熱心網友回復:
sp_msforeachtable使用帶有過濾表的存盤程序。
占位符“?” 表示表。
EXEC sp_msforeachtable
@command1 ='ALTER TABLE ?
ADD RetailValue AS (CAST(QtyAvailable AS int) * CAST(UnitPrice AS int) * 1.5)'
,@whereand = ' And Object_id In (Select Object_id From sys.objects
Where name in ( ''TABLE1'',''TABLE2''))'
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/486999.html
上一篇:從日期定義SQLServer表名
下一篇:使用SQL合并連續的日期范圍
