2016-08-18 115 views
-1

我有以下查询(SQL SERVERSQL - 如何UNION ALL IF @RowCount

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 

如果首先选择的结果是空的话,我需要做其他的选择都将有相同的列但不同的过滤器。我怎样才能得到一个表。

+0

'的这个当@@ ROWCOUNT = 0的两个表的结果。我怎么能联盟?'可以请你详细说明 – TheGameiswar

回答

2

您可以检查是否存在type = 'A',然后使用1st或2nd查询。

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 
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'))