SQL,条件列值?

标签 sql sql-server

我的表中的一列是“DataSource”。数据源可以有两个值,比方说“A”或“B”。当 Datasource = "A"时,我想始终使用该行,但是,如果没有 A 的条目,我想使用 "B"。

如何在 SQL Server 中执行此操作?

编辑:

因此对于特定产品(产品 ID),一个产品 ID 可能有两行,每行包含一个不同的数据源,而另一个产品 ID 可能只有一个数据源:

{ProductID DataSource}
{1  A},
{1  B},
{2  B}

这里我想选择顶行和底行

最佳答案

编辑后的几个选项...

SELECT
  *
FROM
  table
WHERE
  DataSource = 'A'
  OR DataSource = 'B' AND NOT EXISTS (SELECT * FROM table AS lookup WHERE ProductID = table.ProductID AND DataSource = 'A')


SELECT
  *
FROM
  table
INNER JOIN
  (SELECT ProductID, MAX(DataSource) AS DataSource FROM table) AS lookup
    ON  lookup.ProductID  = table.ProductID
    AND lookup.DataSource = table.DataSource


WITH
  sequenced AS
(
  SELECT
    *,
    ROW_NUMBER() OVER (PARTITION BY ProductID ORDER BY DataSource) AS sequence_id
  FROM
    table
)
SELECT
  *
FROM
  sequenced
WHERE
  sequence_id = 1

关于SQL,条件列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8910350/

相关文章:

python - 使用 SQLAlchemy 获取表中的行数

sql - 如何将一个查询响应作为另一查询的列传递?

sql - 在编写 sql server 查询时如何编写类似于 Linq .Any() 的内容

mysql - 需要按开始年份和之后的每一年分组的事实行的总和

java - com.microsoft.sqlserver.jdbc.SQLServerException : The "variant" data type is not supported

SQL 查询 : How to rearrange the output (Transpose? )

python - 如何在 sql 查询中正确转义 %s

python - 在 SQL 数据库中存储 Python 列表

php - SQL:查询搜索所有可能的单词

sql - 如何获取此类数据?