我的表中的一列是“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/