我想返回Metric 447和615的值,但因为447将返回QSA.NumValue而615将返回QSA.DateTimeValue。我需要它在填充时返回,所以如果它是615则不允许DateTimeValue为NULL,如果447则不允许NumValue为NULL,因为当包含在内时,简单的OR语句将不起作用WHERE声明。
这可能吗?
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 :(得分:4)
您可以使用以下WHERE
:
WHERE
(QM.MetricID = 447 AND QSA.NumValue IS NOT NULL)
OR (QM.MetricID = 615 AND QSA.DateTimeValue IS NOT NULL)
答案 1 :(得分:3)
你可能正在寻找这个
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