2017-11-14 11 views
2

しかし、447がQSA.NumValueで返され、615がQSA.DateTimeValueで返されるため、Metric 447と615の両方の値を返すことを望みます。私は、それが615である場合、DateTimeValueをNULLにすることはできません447場合は、単純なORステートメントはWHEREステートメントに含まれているときに動作しないため、NumValueを許可しません。同じSQLクエリ内で2つの別個のものを照会する方法

これは可能ですか?

SELECT 
    Q.ID 
    ,Q.Title 
    ,QS.ID 
    ,QSA.QMID 
    ,QSA.NumValue 
    ,QSA.DateTimeValue 
    ,QM.MetricID 
    ,S.Date 
FROM 
    QSA 
    INNER JOIN QM 
    ON QSA.QMID = QM.ID 
    INNER JOIN QS 
    ON QSA.SessionID = QS.ID 
    INNER JOIN Q 
    ON QS.ID = Q.ID 
    INNER JOIN SQ 
    ON Q.ID = SQ.ID 
    INNER JOIN S 
    ON SQ.ID = S.ID 
WHERE 
    QM.MetricID IN (447, 615) 
    AND QSA.DateTimeValue IS NOT NULL 

ありがとうございます。

+0

を探して? – NoChance

答えて

3

あなたはこのSQLと間違っている何本

WHERE 
    1=CASE WHEN QM.MetricID = 447 AND QSA.NumValue NOT NULL THEN 1 
      WHEN QM.MetricID = 615 AND QSA.DateTimeValue IS NOT NULL THEN 1 
      ELSE 0 
     END 
4

WHEREを使用することができます。

WHERE 
    (QM.MetricID = 447 AND QSA.NumValue IS NOT NULL) 
    OR (QM.MetricID = 615 AND QSA.DateTimeValue IS NOT NULL) 
関連する問題