簡體   English   中英

如何將兩個選擇與不同的where子句組合在一起?

[英]How to combine two selects with different where clauses?

select kota ,total, totalsum from 
(
SELECT  i.[Antam_Unit] as kota ,count(p.[Id_Pks_Pk])as total FROM [SIMPKBL].[dbo].[Pks_Pk] p join [SIMPKBL].[dbo].[Par_Unit_Antam] i on  i.Id_Unit_Antam = p.Id_Unit_Antam  group by i.[Id_Unit_Antam],i.Antam_Unit
UNION ALL
SELECT  i.[Antam_Unit] as kota , count(p.[Id_Proposal_Pk])as totalsum  FROM [SIMPKBL].[dbo].[Pks_Pk] p join [SIMPKBL].[dbo].[Par_Unit_Antam] i on  i.Id_Unit_Antam = p.Id_Unit_Antam where YEAR(p.Tanggal_Cetak_Pks_Pk) = '2012'   group by i.[Id_Unit_Antam],i.Antam_Unit 
) t
group by kota,total

我想要這樣的輸出:

kota total totalsum
A     12      4
B     16      5

由於查詢是如此相似,因此看起來可以將它們組合為一個select

select i.[Antam_Unit] as kota,
  count(p.[Id_Pks_Pk]) as total,
  count( case when YEAR(p.Tanggal_Cetak_Pks_Pk) = '2012' then p.[Id_Proposal_Pk] else null end ) as totalsum
  FROM [SIMPKBL].[dbo].[Pks_Pk] p join [SIMPKBL].[dbo].[Par_Unit_Antam] i on  i.Id_Unit_Antam = p.Id_Unit_Antam
  group by i.[Id_Unit_Antam], i.Antam_Unit

如果我正確理解了您的要求,則可以使用以下簡單語句來實現您正在尋找的結果:

SELECT  i.[Antam_Unit] as kota, 
count(p.[Id_Pks_Pk]) as total,
SUM(CASE WHEN YEAR(p.Tanggal_Cetak_Pks_Pk) = '2012' AND p.[Id_Proposal_Pk] IS NOT NULL THEN 1 ELSE 0 END) as totalsum  
FROM [SIMPKBL].[dbo].[Pks_Pk] p 
 join [SIMPKBL].[dbo].[Par_Unit_Antam] i 
 on  i.Id_Unit_Antam = p.Id_Unit_Antam 
group by i.[Id_Unit_Antam],i.Antam_Unit 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM