SQL - 如何联合所有IF @rowcount

时间:2016-08-18 17:05:39

标签: sql sql-server

我有以下查询(SQL SERVER

SELECT name, number, position, workingyears 
FROM employee 
WHERE type = 'A'

IF @@ROWCOUNT = 0
        BEGIN

SELECT name, number, position, workingyears 
FROM employee 
WHERE type = 'B'

        END

如果第一个选择的结果为空,那么我需要做其他选择,这些选择将具有相同的列但具有不同的过滤器。我怎么能只得到一张桌子呢。

2 个答案:

答案 0 :(得分:2)

您可以检查type = 'A'是否存在,然后使用第一个或第二个查询。

if exists(select 1 from employee WHERE type = 'A')

SELECT name, number, position, workingyears 
FROM employee 
WHERE type = 'A'

else

SELECT name, number, position, workingyears 
FROM employee 
WHERE type = 'B'

或在单个查询中。

SELECT name, number, position, workingyears 
FROM employee 
WHERE type = case when exists(select 1 from employee WHERE type = 'A') then 'A'
             else 'B' end

答案 1 :(得分:2)

你可以试试这个:

SELECT name, number, position, workingyears 
FROM employee 
WHERE type = 'A'

UNION ALL

SELECT name, number, position, workingyears 
FROM employee 
WHERE (type = 'B' and NOT EXISTS(SELECT 1 FROM employee WHERE type = 'A'))