我的SSMS连接中有40多个数据库(链接服务器),每个数据库具有相同的模式,表,列,但每个位置都有唯一的数据.我正在寻找最好的方法将它们全部联合到一个VIEW或Alias中,这将允许我根据数据库/位置分配和ID,并有一个单独的源来查询,主要是为了将来的交叉引用.
例如,我希望能够查询具有列[order],[item],[amount]的数据库之间的单个公用表,并根据数据来自的数据库添加其他列[location]在查询中.如:
SELECT *
FROM [UnionTableSource]
Run Code Online (Sandbox Code Playgroud)
其中显示的结果如
Location | Order | Item | Amount
1 | 1234 | 567 | $500
2 | 1234 | 529 | $125
3 | 1279 | 529 | $125
3 | 1234 | 789 | $100
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建以下视图,查询运行查找,直到我尝试创建一个视图,然后我收到一个错误,指出:创建视图或函数失败,因为没有为列1指定列名,研究我发现没有真正帮助,因为它通常是一个简单的查询错误,但我的目前运行正常.任何见解?
CREATE VIEW dbo.prov_prod_rv AS
WITH rep_prods AS (SELECT t.amount, t.provider_id, t.clinic, p.period_start, t.impacts,
p.period_end, p.period_id, p.fiscal_year, p.date_man
FROM dbo.transactions AS t
CROSS JOIN dbo.period AS p
WHERE (t.date_entered BETWEEN p.period_start AND p.period_end))
SELECT SUM(r.amount), r.provider_id, d.first_name, d.last_name, d.position_id, d.clinic, r.period_id, r.fiscal_year, r.date_man
FROM rep_prods AS r INNER JOIN
dbo.provider AS d ON r.provider_id = d.provider_id AND r.clinic = d.clinic
WHERE (r.impacts = 'P') AND (r.amount <> 0)
GROUP BY r.provider_id, d.first_name, d.last_name, d.position_id, d.clinic, r.period_id, r.fiscal_year, r.date_man
Run Code Online (Sandbox Code Playgroud) 我正在更新我的数据库中的值以获取诊所的位置.现在,我有clinic多个表的列,说明他们所在的城市.目前有35个,它被压缩成一个无空格字符串(IE:FortSmith).我想用不同的格式追溯调整每个值,然后使用我的附加格式继续使用该格式.
UPDATE transactions
SET clinic='07 - Fort Smith'
WHERE clinic='FortSmith'
Run Code Online (Sandbox Code Playgroud)
更新很简单,但是我有35个不同的位置和共享此列的大量表格clinic有没有办法我可以对列的所有表进行此测试clinic并更新它适用的位置?