Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 合并两个查询_Sql_Sql Server - Fatal编程技术网

Sql 合并两个查询

Sql 合并两个查询,sql,sql-server,Sql,Sql Server,请帮助合并这两个查询,我已尝试使用UNION并获得错误结果 --第一个问题 select p.pegawainama,r.pegawainid, sum(cast(round(r.besarpotongan,0) as int)) as totalpotnondinas from rpotongan r inner join pegawai p on p.pegawainid=r.pegawainid where r.nojenpot not in (1,7,6

请帮助合并这两个查询,我已尝试使用
UNION
并获得错误结果

--第一个问题

select  p.pegawainama,r.pegawainid, sum(cast(round(r.besarpotongan,0) as int)) as totalpotnondinas 
from 
    rpotongan r
inner join 
    pegawai p on p.pegawainid=r.pegawainid
where 
    r.nojenpot not in (1,7,6,12,14)
    --and r.pegawainid = '6290134A'
    and r.bulan = '3'
    and r.tahun = '2012'
    and p.kodebayar = '152012'
group by
    r.pegawainid,
    p.pegawainama
order by
    p.pegawainama,
    sum(cast(round(r.besarpotongan,0) as int))
--第二个问题

select p.pegawainama, r.pegawainid, sum(cast(round(r.besarpotongan,0) as int)) as totalpotdinas from rpotongan r 
inner join 
    pegawai p on p.pegawainid=r.pegawainid
where 
    r.nojenpot in (1,7,6,12,14)
    --and r.pegawainid = '6290134A'
    and r.bulan = '3'
    and r.tahun = '2012'
    and p.kodebayar = '152012'
group by
    r.pegawainid,
    p.pegawainama
order by
    p.pegawainama,
    sum(cast(round(r.besarpotongan,0) as int))
select p.pegawainama, r.pegawainid, sum(cast(round(r.besarpotongan,0) as int)) as total, 
'potdinas' as src from rpotongan r inner join pegawai p on p.pegawainid=r.pegawainid
where r.nojenpot in (1,7,6,12,14) --and r.pegawainid = '6290134A' and r.bulan = '3'
and r.tahun = '2012' and p.kodebayar = '152012' group by r.pegawainid, p.pegawainama
order by p.pegawainama, sum(cast(round(r.besarpotongan,0) as int))

要使用
UNION
,您需要具有相同的列名,因此不能在一个查询中使用
totalpotnodinas
,在另一个查询中使用
totalpotdinas

您可以调用这两个列
totals
,并添加一个额外的列,指示哪个查询是数据源。例如:

select p.pegawainama,r.pegawainid, sum(cast(round(r.besarpotongan,0) as int)) as total,
'potnondinas' as src from rpotongan r inner join pegawai p on p.pegawainid=r.pegawainid 
where r.nojenpot not in (1,7,6,12,14) --and r.pegawainid = '6290134A' and r.bulan = '3'
and r.tahun = '2012' and p.kodebayar = '152012' group by r.pegawainid, p.pegawainama
order by p.pegawainama, sum(cast(round(r.besarpotongan,0) as int))
--第二个问题

select p.pegawainama, r.pegawainid, sum(cast(round(r.besarpotongan,0) as int)) as totalpotdinas from rpotongan r 
inner join 
    pegawai p on p.pegawainid=r.pegawainid
where 
    r.nojenpot in (1,7,6,12,14)
    --and r.pegawainid = '6290134A'
    and r.bulan = '3'
    and r.tahun = '2012'
    and p.kodebayar = '152012'
group by
    r.pegawainid,
    p.pegawainama
order by
    p.pegawainama,
    sum(cast(round(r.besarpotongan,0) as int))
select p.pegawainama, r.pegawainid, sum(cast(round(r.besarpotongan,0) as int)) as total, 
'potdinas' as src from rpotongan r inner join pegawai p on p.pegawainid=r.pegawainid
where r.nojenpot in (1,7,6,12,14) --and r.pegawainid = '6290134A' and r.bulan = '3'
and r.tahun = '2012' and p.kodebayar = '152012' group by r.pegawainid, p.pegawainama
order by p.pegawainama, sum(cast(round(r.besarpotongan,0) as int))

如果省略合成
src
列,
UNION
将合并相同的结果。

不确定除了不同的别名之外,这两个查询如何不同,但在
UNION
中只能有一个
ORDER BY
(错误消息应该准确地告诉您)。尝试:


如果要在两个结果之间对
SUM()
列进行解密,请使用
SUM。。。作为col1,在第一个查询中NULL作为col2
,而
NULL作为col1,求和。。。正如第二节中的col2

很难说没有错误,但我打赌RDBMS会抱怨您在
联合中使用了
ORDER BY
,而没有将联合组件包含在
()
中。谢谢您的回复,我已经收到了。但是我想知道如果我想让potnodinas和potdinas在不同的列中,因为如果我们使用union,所有列potnodinas和potdinas将存储在一列中。在使用
potnodinas
的查询中,将
null添加为potdinas
并在使用
potdinas
的查询中添加
null作为potnodinas