3

DocumentID同じテーブルの特定の列に 4 つの定義済みの値がある場合に を返す SQL クエリを作成しました。私が抱えている問題は、正確な結果が得られるように、値ごとに別の列から ID を定義する必要があることです。

私が書いたクエリは次のとおりです。

SELECT DISTINCT 
    VV.[DocumentID], [Filename], [Path], D.LatestRevisionNo
FROM
    Documents D 
INNER JOIN
    [dbo].[DocumentsInProjects] DP ON DP.DocumentID = D.DocumentID 
INNER JOIN
    [dbo].[Projects] P ON DP.ProjectID = P.ProjectID 
INNER JOIN
    [dbo].[VariableValue] VV ON VV.DocumentID = D.DocumentID
WHERE 
    VV.ValueText IN ('170', '316', '2.125', 'LOCK RING') 
GROUP BY 
    VV.DocumentID, D.Filename, P.Path, D.LatestRevisionNo
HAVING 
    COUNT(DISTINCT ValueText) = 4 
    AND Filename LIKE '%sld%'

私が必要とするのは次のようなものです

(VV.variableID = 79 AND VV.ValueText = 'LOCK RING') 
AND (VV.variableID = 92 AND VV.ValueText = '316') 
AND (VV.variableID = 328 AND VV.ValueText = '2.125') 
AND (VV.variableID = 351 AND VV.ValueText = '170')
4

1 に答える 1

3

あなたは近かった:

(VV.variableID = 79 AND VV.ValueText = 'LOCK RING') 
OR (VV.variableID = 92 AND VV.ValueText = '316') 
OR (VV.variableID = 328 AND VV.ValueText = '2.125') 
OR (VV.variableID = 351 AND VV.ValueText = '170')

variableId は、同じレコードで 79 と 92 と 328 と 351 にすることはできません。したがって、 or が必要です。

于 2015-11-23T21:09:35.990 に答える