使用 INNER JOIN 的动态 SQL 查询
Dynamic SQL Query using INNER JOIN
这是根据主题中的建议更新的查询:
DECLARE
@table sysname,
@sql nvarchar(max),
@dbname sysname;
SELECT @dbname = MAX(dbname)
FROM ACVSCore.dbo.ACVSUJournalVolumeManagement.dbname
WHERE ACVSCore.dbo.ACVSUJournalVolumeManagement LIKE '%ACVSUJournal%';
SELECT @table = N'.dbo.ACVSUJournalLog';
SET @sql = N'SELECT
ap.LastName as [Last Name],
ap.FirstName as [First Name],
ap.Text1 as [Company],
ap.Text2 as [Employee ID],
tn.ObjectName2 as [Door Name],
MIN(tn.ServerUTC) AS [ServerUTC]
FROM ' + @dbname + @table + N' tn
INNER JOIN
ACVSCore.Access.Personnel ap on tn.objectidentity1 =
ap.GUID
WHERE
ap.PersonnelTypeID = ''2'' and tn.MessageType
= ''CardAdmitted'' and tn.ServerUTC >= DATEADD(day, -1, GETDATE())
GROUP BY
ap.Text1, ap.LastName, ap.FirstName, ap.Text2, tn.ObjectName2
ORDER BY
ap.Text1'
EXECUTE
sp_executesql @sql;
我编辑了查询以反映建议的更改,现在可以正常使用了。再次感谢!
不要在别名中使用 '
SET @sql = N'SELECT
ACVSCore.Access.Personnel.LastName as [Last Name],
ACVSCore.Access.Personnel.FirstName as [First Name],
ACVSCore.Access.Personnel.Text1 as [Company],
ACVSCore.Access.Personnel.Text2 as [Employee ID],
dbo.ACVSUJournalLog.ObjectName2 as [Door Name],
MIN(dbo.ACVSUJournalLog.ServerUTC) AS [ServerUTC]
FROM ' + @dbname + @table
这是我[编辑:最新] 尝试修复拼写错误
DECLARE
@table sysname,
@sql nvarchar(max),
@dbname sysname;
select @dbname = MAX(dbname)
from ACVSCore.dbo.ACVSUJournalVolumeManagement
where ACVSCore.dbo.ACVSUJournalVolumeManagement LIKE '%ACVSUJournalLog%';
select @table = N'.dbo.ACVSUJournalLog';
SET @sql = N'SELECT
ap.LastName as [Last Name],
ap.FirstName as [First Name],
ap.Text1 as [Company],
ap.Text2 as [Employee ID],
tn.ObjectName2 as [Door Name],
MIN(tn.ServerUTC) AS [ServerUTC]
FROM ' + @dbname + @table + N' tn
INNER JOIN
ACVSCore.Access.Personnel ap on tn.objectidentity1 =
ap.GUID
WHERE
ap.PersonnelTypeID = ''2'' and tn.MessageType
= ''CardAdmitted'' and tn.ServerUTC >= DATEADD(day, -1, GETDATE())
GROUP BY
ap.Text1, ap.LastName, ap.FirstName, ap.Text2, tn.ObjectName2
ORDER BY
ap.Text1'
EXECUTE
sp_executesql @sql;
这是根据主题中的建议更新的查询:
DECLARE
@table sysname,
@sql nvarchar(max),
@dbname sysname;
SELECT @dbname = MAX(dbname)
FROM ACVSCore.dbo.ACVSUJournalVolumeManagement.dbname
WHERE ACVSCore.dbo.ACVSUJournalVolumeManagement LIKE '%ACVSUJournal%';
SELECT @table = N'.dbo.ACVSUJournalLog';
SET @sql = N'SELECT
ap.LastName as [Last Name],
ap.FirstName as [First Name],
ap.Text1 as [Company],
ap.Text2 as [Employee ID],
tn.ObjectName2 as [Door Name],
MIN(tn.ServerUTC) AS [ServerUTC]
FROM ' + @dbname + @table + N' tn
INNER JOIN
ACVSCore.Access.Personnel ap on tn.objectidentity1 =
ap.GUID
WHERE
ap.PersonnelTypeID = ''2'' and tn.MessageType
= ''CardAdmitted'' and tn.ServerUTC >= DATEADD(day, -1, GETDATE())
GROUP BY
ap.Text1, ap.LastName, ap.FirstName, ap.Text2, tn.ObjectName2
ORDER BY
ap.Text1'
EXECUTE
sp_executesql @sql;
我编辑了查询以反映建议的更改,现在可以正常使用了。再次感谢!
不要在别名中使用 '
SET @sql = N'SELECT
ACVSCore.Access.Personnel.LastName as [Last Name],
ACVSCore.Access.Personnel.FirstName as [First Name],
ACVSCore.Access.Personnel.Text1 as [Company],
ACVSCore.Access.Personnel.Text2 as [Employee ID],
dbo.ACVSUJournalLog.ObjectName2 as [Door Name],
MIN(dbo.ACVSUJournalLog.ServerUTC) AS [ServerUTC]
FROM ' + @dbname + @table
这是我[编辑:最新] 尝试修复拼写错误
DECLARE
@table sysname,
@sql nvarchar(max),
@dbname sysname;
select @dbname = MAX(dbname)
from ACVSCore.dbo.ACVSUJournalVolumeManagement
where ACVSCore.dbo.ACVSUJournalVolumeManagement LIKE '%ACVSUJournalLog%';
select @table = N'.dbo.ACVSUJournalLog';
SET @sql = N'SELECT
ap.LastName as [Last Name],
ap.FirstName as [First Name],
ap.Text1 as [Company],
ap.Text2 as [Employee ID],
tn.ObjectName2 as [Door Name],
MIN(tn.ServerUTC) AS [ServerUTC]
FROM ' + @dbname + @table + N' tn
INNER JOIN
ACVSCore.Access.Personnel ap on tn.objectidentity1 =
ap.GUID
WHERE
ap.PersonnelTypeID = ''2'' and tn.MessageType
= ''CardAdmitted'' and tn.ServerUTC >= DATEADD(day, -1, GETDATE())
GROUP BY
ap.Text1, ap.LastName, ap.FirstName, ap.Text2, tn.ObjectName2
ORDER BY
ap.Text1'
EXECUTE
sp_executesql @sql;