sql - 如何在同一 SQL 查询中查询 2 个不同的事物

标签 sql sql-server

我想同时返回指标 447 和 615 的值,因为 447 将在 QSA.NumValue 中返回,而 615 将在 QSA.DateTimeValue 中返回。我需要它在填充时返回,所以如果它是 615,则不允许 DateTimeValue 为 NULL,如果是 447,则不允许 NumValue 为 NULL,因为当包含在 WHERE 语句中时,简单的 OR 语句将不起作用。

这可能吗?

  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

提前谢谢你。

最佳答案

您可以使用以下WHERE:

WHERE
  (QM.MetricID = 447 AND QSA.NumValue IS NOT NULL)
  OR (QM.MetricID = 615 AND QSA.DateTimeValue IS NOT NULL)

关于sql - 如何在同一 SQL 查询中查询 2 个不同的事物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47281522/

相关文章:

sql-server - 使用 .fmt 文件批量插入 : Operating system error code (null)

MYSQL:在值不是特定值的情况下获取字段的平均值

sql - 抑制Sqlite数据库上的重复项

MySQL 分组查询

sql-server - 连接 varchar(max) 变量 SQL Server 2005

sql - SQL Server如何从另一个数据库中选择一个表的数据?

.net - 如何在.NET中的catch中重新执行错误的行

sql-server - 外键约束

sql - 稀疏数据 : efficient storage and retrieval in an RDBMS

sql - 混淆postgres中的数据