sách gpt4 ai đã đi

sql-server - 嵌入在选择查询中的动态 SQL

In lại 作者:行者123 更新时间:2023-12-02 23:56:06 28 4
mua khóa gpt4 Nike

我有一张 table Users ,

╔════╦═══════╦══════╗║ Id ║ Name ║ Db ║╠════╬═══════╬══════╣║ 1 ║ Peter ║ DB1 ║║ 2 ║ John ║ DB16 ║║ 3 ║ Alex ║ DB23 ║╚════╩═══════╩══════╝

and many databases that have the same structure (Same tables, same procedures, ...), so every database have a table named Project, and this is the structure of Project table,

╔════╦═════════╦═════════════╗║ Id ║ Request ║ Information ║╠════╬═════════╬═════════════╣║ 1 ║ 126 ║ XB1 ║║ 2 ║ 126 ║ D6 ║║ 3 ║ 202 ║ BM-23 ║╚════╩═════════╩═════════════╝

So, when I query a database :

SELECT count(distinct([Request])) as nbrRequests
FROM [SRV02].[DB1].[dbo].[Project]

我得到这个结果:

╔═════════════╗║ NbrRequests ║╠═════════════╣║ 2 ║╚═════════════╝

现在,我想要的是“链接”/“加入”...表 Users 中的结果对于此查询,其中列 Dbhiện hữuUsers table 是我的数据库的名称,所以我可以获得这样的结果:

╔════╦═══════╦══════╦═════════════╗║ Id ║ Name ║ Db ║ NbrRequests ║╠════╬═══════╬══════╬═════════════╣║ 1 ║ Peter ║ DB1 ║ 2 ║║ 2 ║ John ║ DB16 ║ 3 ║║ 3 ║ Alex ║ DB23 ║ 6 ║╚════╩═══════╩══════╩═════════════╝

我正在尝试使用动态 SQL,但没有成功。

Để ý:每个用户只有一个数据库,一个数据库只属于一个用户,是一对一的关系

1 Câu trả lời

可以使用 UNION 计算每个特定数据库表并为其指定数据库标识,如下所示:

SELECT u.Id, u.Name, u.Db, dbCts.nbrRequests
FROM [Users] u INNER JOIN
(SELECT 'DB1' as db, count(distinct([Request])) as nbrRequests
FROM [SRV02].[DB1].[dbo].[Project]
UNION
SELECT 'DB16', count(distinct([Request])) as nbrRequests
FROM [SRV02].[DB16].[dbo].[Project]
UNION
SELECT 'DB23', count(distinct([Request])) as nbrRequests
FROM [SRV02].[DB23].[dbo].[Project]
) dbCts ON u.Db = dbCts.db

不要忘记将服务器和架构添加到 Users 表中,我没有这样做,因为您的问题没有此类信息。

此外,为了执行此操作,您连接的用户必须拥有所有数据库的权限。

关于sql-server - 嵌入在选择查询中的动态 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35795006/

28 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com