我很難搞清楚我正在處理的SQL查詢的最後部分。我有一對我需要從中提取數據的表。一個表格包含無線接入點的UID和其可讀的名稱(假設0.38.153.35.118.16具有AP-9999-9-NW的人類可讀名稱)。另一個包含數千行輪詢數據,每行包含該輪詢的時間戳,接入點的UID以及連接的客戶端數量。SQL Group By創建列?
的原始數據是這樣的:
DateTime AP Name Clients
2013-10-09 18:35:23.417 0.38.153.35.118.16.0 3
2013-10-09 18:35:23.417 0.38.153.35.118.16.1 14
2013-10-09 18:35:23.417 0.38.203.128.91.224.0 7
2013-10-09 18:35:23.417 0.38.203.128.91.224.1 1
然而,每個接入點都有,我們要合併成一個結果兩個無線電,從而加入.0和0.1每個UID。這提出了兩個問題;我必須以某種方式結合每條線的兩個結果。其次,我必須使用SUBSTRING刪除最後兩個字符,並通過聯接將UID結尾到另一個表,但這樣做會丟棄最後兩個字符。考慮到所有這一切,我有以下查詢:
SELECT
CAST([SolarWindsOrion].[dbo].[CustomPollerStatistics_Detail].[DateTime] AS datetime) AS DateTime,
'AP Name' = SUBSTRING([SolarWindsOrion].[dbo].[CustomPollerStatistics_Detail].[RowID], 1, LEN([SolarWindsOrion].[dbo].[CustomPollerStatistics_Detail].[RowID]) - 2),
[SolarWindsOrion].[dbo].[CustomPollerStatistics_Detail].[RawStatus] AS Clients
FROM
[SolarWindsOrion].[dbo].[CustomPollerStatistics_Detail]
INNER JOIN
[SolarWindsOrion].[dbo].[CustomPollerStatus]
ON Left([SolarWindsOrion].[dbo].[CustomPollerStatistics_Detail].[RowID], Len([SolarWindsOrion].[dbo].[CustomPollerStatistics_Detail].[RowID]) - 2) = [SolarWindsOrion].[dbo].[CustomPollerStatus].[RowID]
WHERE
[SolarWindsOrion].[dbo].[CustomPollerStatistics_Detail].[CustomPollerAssignmentID] = '6C4E621B-A7D3-439C-8402-D692BE67743A'
這就是我的思想融化的地方。這一切確實是從AP名稱爲兩個尾部字符:
DateTime AP Name Clients
2013-10-09 18:35:23.417 0.38.153.35.118.16 3
2013-10-09 18:35:23.417 0.38.153.35.118.16 14
2013-10-09 18:35:23.417 0.38.203.128.91.224 7
2013-10-09 18:35:23.417 0.38.203.128.91.224 1
這讓我更接近,但連接是什麼都不做,我還是希望他們分享像AP名稱的行結合起來。 Group By似乎是最有用的選擇,但我似乎無法弄清楚如何在專門爲結果創建的列上使用它。最終目標是得到這樣的東西:
DateTime AP Name Clients
2013-10-09 18:35:23.417 AP-9999-9-NW 17
2013-10-09 18:35:23.417 AP-1234-5-SC 8
任何想法?對不起,可能提供了太多的信息。
'(假設0.38.153.35.118.16有一個人類可讀的AP-9999-9-NW名稱)「他們在哪裏? –
@hamlet這些名稱位於CustomPollerStatus表(或[SolarWindsOrion]。[dbo]。[CustomPollerStatus])中。 –