1

我想将三个不同列名称ProcessFalseRedirect,ProcessTrueRedirect,GeneralRedirectToPP的值合并到一个名为PPID的列中。

我正在使用的查询是这样的,

select ProcessFalseRedirect,ProcessTrueRedirect,GeneralRedirectToPP from IVR_PPMaster

这给了我以下结果,

在此处输入图像描述

我希望我的输出是这样的,

PPID
---------
PP-01
PP-02
PP-03
PP-04
PP-04a
PP-04b
PP-05

等等。

我想要一个查询,它也会忽略空白行和空白单元格。

请帮忙。

4

4 回答 4

4

UNION可以帮助你。

select ProcessFalseRedirect PPID from IVR_PPMaster
union
select ProcessTrueRedirect from IVR_PPMaster
union
select GeneralRedirectToPP from IVR_PPMaster

要按升序获取数据,请使用以下命令:

select PPID from
(
  select ProcessFalseRedirect PPID from IVR_PPMaster
  union
  select ProcessTrueRedirect from IVR_PPMaster
  union
  select GeneralRedirectToPP from IVR_PPMaster
) p
order by PPID

UNION请注意,和之间存在差异UNION ALL

于 2013-10-19T08:08:59.960 回答
1

尝试这个:

(SELECT ProcessFalseRedirect PPID FROM IVR_PPMaster WHERE ProcessFalseRedirect IS NOT NULL
UNION ALL
SELECT ProcessTrueRedirect FROM IVR_PPMaster WHERE ProcessTrueRedirect IS NOT NULL
UNION ALL
SELECT GeneralRedirectToPP FROM IVR_PPMaster WHERE GeneralRedirectToPP IS NOT NULL)
ORDER BY ProcessFalseRedirect
于 2013-10-19T08:13:33.717 回答
1

请这样做

SELECT ProcessFalseRedirect FROM IVR_PPMaster where ProcessFalseRedirect<>''
UNION
SELECT ProcessTrueRedirect from IVR_PPMaster where ProcessTrueRedirect<>'' 
UNION 
SELECT GeneralRedirectionTopp from IVR_PPMaster where GeneralRedirectionTopp<>''
于 2013-10-19T08:23:08.527 回答
1

对于 Sql Server 2008+:

选择 PPID
FROM IVR_PPMaster
交叉应用(值(ProcessFalseRedirect),
                    (处理TrueRedirect),
                    (GeneralRedirectToPP) ) AS 线路(PPID)
按 PPID 订购

可以在此处找到解决方案说明:SQL Server 2008 中的表值构造函数

于 2013-10-19T08:26:42.303 回答