我有这3张桌子,我需要将它们组合在一起。
tblSites
| Site_Code | Site_Name |
AA AaaaaA
BB BaaaaB
CC CaaaaC
tblWeb
| WebID | AppName | AppUrl | ServerName |
1 aWeb www.aWeb.com ServerA
2 bWeb www.bWeb.com ServerA
3 cWeb www.cWeb.com ServerB
4 dWeb www.dWeb.com ServerA
5 eWeb www.eWeb.com ServerC
6 fWeb www.fWeb.com ServerC
7 gWeb www.gWeb.com ServerD
8 hWeb www.hWeb.com ServerD
tblWebServices
| Sites | WebID | SummaryState | Last_Check |
A 1 OK 02/01/2016 10:00:00.000
A 1 Critical 02/01/2016 10:00:04.000
A 2 OK 02/01/2016 10:00:04.000
A 2 Critical 02/01/2016 10:00:06.000
A 3 OK 02/01/2016 10:00:07.000
A 3 OK 02/01/2016 10:00:09.000
A 4 OK 02/01/2016 10:00:10.000
A 4 OK 02/01/2016 10:00:12.000
A 5 Critical 02/01/2016 10:00:14.000
A 5 OK 02/01/2016 10:00:17.000
A 6 OK 02/01/2016 10:00:20.000
A 6 OK 02/01/2016 10:00:23.000
A 7 OK 02/01/2016 10:00:25.000
A 7 Critical 02/01/2016 10:00:36.000
A 8 OK 02/01/2016 10:00:39.000
A 8 OK 02/01/2016 10:00:40.000
B 1 Critical 02/02/2016 10:00:00.000
B 1 OK 02/02/2016 10:00:04.000
B 2 Critical 02/02/2016 10:00:04.000
B 2 OK 02/02/2016 10:00:06.000
B 3 Critical 02/02/2016 10:00:07.000
B 3 Critical 02/02/2016 10:00:09.000
B 4 Critical 02/02/2016 10:00:10.000
B 4 Critical 02/02/2016 10:00:12.000
B 5 OK 02/02/2016 10:00:14.000
B 5 Critical 02/02/2016 10:00:17.000
B 6 Critical 02/02/2016 10:00:20.000
B 6 Critical 02/02/2016 10:00:23.000
B 7 Critical 02/02/2016 10:00:25.000
B 7 OK 02/02/2016 10:00:36.000
B 8 Critical 02/02/2016 10:00:39.000
B 8 Critical 02/02/2016 10:00:40.000
这是3张桌子。我需要获得这种输出,我需要获得每个ServerName的相应Appname以及" LATEST"每个站点的摘要状态。 请。你可以帮我创建这个输出吗? 我很好,每个代码1个ServerName。
**Expected Output**
| ServerA | Site-AA | Site-BB | Site-CC | Site-DD |
aWeb Critical OK No Data Found No Data Found
bWeb Critical OK No Data Found No Data Found
dWeb OK Critical No Data Found No Data Found
| ServerB | Site-AA | Site-BB | Site-CC | Site-DD |
cWeb OK Critical No Data Found No Data Found
| ServerC | Site-AA | Site-BB | Site-CC | Site-DD |
eWeb OK Critical No Data Found No Data Found
fWeb OK Critical No Data Found No Data Found
| ServerD | Site-AA | Site-BB | Site-CC | Site-DD |
gWeb Critical OK No Data Found No Data Found
hWeb OK Critical No Data Found No Data Found
这是由专家之一创建的代码。
DECLARE @sql NVARCHAR(MAX)
SET @sql = ''
SELECT @sql = 'SELECT tblWeb.AppName ' + CHAR(10)
SELECT @sql = @sql + ' , ISNULL(MAX(CASE WHEN Site_Code = ''' + Site_Code + '''THEN SummaryState END), ''No Data Found'') AS ' + QUOTENAME('Site-'+Site_Code) + CHAR(10)
FROM tblSites
ORDER BY Site_Code
SELECT @sql = @sql + 'FROM ( SELECT *, rn = ROW_NUMBER() OVER(PARTITION BY Site_Code , WebID ORDER BY Last_Check DESC) FROM tblWebServices ) t
LEFT JOIN tblWeb ON t.WebID = tblWeb.WebID
WHERE t.rn = 1 GROUP BY tblWeb.AppName ORDER BY tblWeb.AppName '
PRINT @sql
EXEC sp_executesql @sql
该代码的输出就像这样
| AppName | Site-AA | Site-BB | Site-CC | Site-DD |
aWeb Critical OK No Data Found No Data Found
bWeb Critical OK No Data Found No Data Found
cWeb OK Critical No Data Found No Data Found
dWeb OK Critical No Data Found No Data Found
eWeb OK Critical No Data Found No Data Found
fWeb OK Critical No Data Found No Data Found
gWeb Critical OK No Data Found No Data Found
hWeb OK Critical No Data Found No Data Found
我需要获得每个服务器的AppName,就像我在预期输出中显示的那样。