如何在同一SQL查询中查询2个单独的内容

时间:2017-11-14 09:03:30

标签: sql sql-server

我想返回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

提前谢谢。

2 个答案:

答案 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