1

最初の SQL クエリ (合計メモリ)

SELECT 
Nodes.NodeID AS NodeID,  Nodes.TotalMemory AS TotalMemory, Nodes.Caption AS NodeName
 FROM 
(Nodes INNER JOIN Volumes ON (Nodes.NodeID = Volumes.NodeID))

2 番目の SQL クエリ (ノード上の CPU の数)

SELECT N.Caption, COUNT(DISTINCT CPUIndex)

FROM CPUMultiLoad_Detail CPU WITH(NOLOCK)

JOIN Nodes N ON CPU.NodeID = N.NodeID

GROUP BY
N.Caption
Order By
N.Caption

最初のクエリと2番目のクエリを結合したいので、同じテーブル内のノードに合計メモリとCPU数の両方があります。両方のクエリを結合するにはどうすればよいですか? 共通キーNodes.NodeIDを使用して参加できますが、どうすればよいですか?

4

4 に答える 4

1

同じ状況で、一時テーブルを使用しました

SELECT ..... FROM.... INTO #Temp1

行く

SELECT ..... FROM.... INTO #Temp2

行く

SELECT ..... FROM #Temp1, #Temp2 WHERE #Temp1.NodeID = #Temp2.​​NodeID

次のように一時テーブルを削除することを忘れないでください。

DROP テーブル #Temp1 DROP テーブル #Temp2

于 2013-10-28T17:22:18.300 に答える
0

SELECT t1.col2,t2.col3 FROM (SELECT NodeID col1,TotalMemory col2,Caption col3 FROM Nodes)t1 join
(SELECT NodeID col1,Caption col2,COUNT(DISTINCT CPUIndex) col3 FROM CPUMultiLoad_Detail CPU WITH(NOLOCK) GROUP BY Caption Order By Caption)t2 ON t1.col1=t2.col1
于 2013-10-28T17:35:21.500 に答える
0

「With」は、クリーンなクエリを作成するのに役立ちます。

    WITH CPUOnNodes AS (    
       SELECT N.NodeID, N.Caption, COUNT(DISTINCT CPUIndex)
       FROM CPUMultiLoad_Detail CPU WITH(NOLOCK)
       JOIN Nodes N ON CPU.NodeID = N.NodeID
       GROUP BY N.NodeID, N.Caption
       Order By N.Caption
    )
    SELECT N.NodeID, N.TotalMemory, N.Caption NodeName
    FROM Nodes N 
    INNER JOIN Volumes V ON N.NodeID = V.NodeID
    INNER JOIN CPUOnNodes C ON N.NodeID = C.NodeID
于 2013-10-28T17:22:18.257 に答える