我有三个选择查询,它们基于不同的where子句从同一张表中返回总记录,成功记录和失败记录。我想将所有这些语句的结果合并到一个表中以创建存储过程,但结果表应具有cdr,success,failure的三个不同的列
SELECT Count(*) AS cdr FROM ABC AS c WITH (NOLOCK) WHERE APPID IN( 1, 2 ) AND CALLDATE = '2012-10-09' SELECT Count(*) AS success FROM ABC AS d WITH (NOLOCK) WHERE APPID IN( 44, 45 ) AND CALLDATE = '2012-10-09' AND HANGUPCODE IN ( 'man', 'mach' ) SELECT Count(*) AS fail FROM ABC WITH (NOLOCK) WHERE APPID IN( 44, 45 ) AND CALLDATE = '2012-10-09' AND HANGUPCODE NOT IN ( 'man', 'mach' )
联合会在一列中给出结果,因此它无效。任何其他想法
只需将每个选择语句括在括号中,为每个选择语句指定一个别名,然后SELECT在顶部使用:
SELECT
SELECT (select count(*) as cdr from abc as c with (nolock) where appid in(1,2) and calldate = '2012-10-09' ) AS Column1, (select count(*) as success from abc as d with (nolock) where appid in(44,45) and calldate = '2012-10-09' and hangupcode in ('man', 'mach') ) AS Column2, (select count(*) as fail from abc with (nolock) where appid in(44,45) and calldate = '2012-10-09' and hangupcode not in ('man', 'mach') ) AS Column3
基本上,您将每个查询视为一个单独的列。