Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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
Mysql 使用两个单独的导入视图和单独的计算按同一列/变量分组_Mysql_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Mysql 使用两个单独的导入视图和单独的计算按同一列/变量分组

Mysql 使用两个单独的导入视图和单独的计算按同一列/变量分组,mysql,sql,sql-server,sql-server-2008,Mysql,Sql,Sql Server,Sql Server 2008,因此,基本上我的代码涉及一个创建的表,它的最后一列是前两列的总和,其中第一列来自表X,第二列来自“表X与表Y的内部联接” 但是,我想通过“对手”对这三个列进行分组,这是一个变量,存在于“表X”和“表X与表Y的内部联接”中 棘手的是,有些交易对手的数据集为1(来自表X),有些交易对手的数据集为2(来自表X与表Y的内部联接),有些交易对手的数据集为2,有些交易对手的数据集为2!我想包括交叉点和异常值,但只有在对照称为c.COUNTERPTY的交易对手主密钥进行检查之后 请仔细阅读下面的代码,看看上面

因此,基本上我的代码涉及一个创建的表,它的最后一列是前两列的总和,其中第一列来自表X,第二列来自“表X与表Y的内部联接”

但是,我想通过“对手”对这三个列进行分组,这是一个变量,存在于“表X”和“表X与表Y的内部联接”中

棘手的是,有些交易对手的数据集为1(来自表X),有些交易对手的数据集为2(来自表X与表Y的内部联接),有些交易对手的数据集为2,有些交易对手的数据集为2!我想包括交叉点和异常值,但只有在对照称为c.COUNTERPTY的交易对手主密钥进行检查之后

请仔细阅读下面的代码,看看上面的解释如何与手头的问题相关。我为代码的长度道歉

select 
p.Name as ENTITY, t.[Counterparty Code],  c.CNTRPTY_DS as COUNTERPARTY, cs.Tier,

... irrelevant code removed

sum((t.[Current value decimal] - t.[Trade price decimal])/100 * case when t.[Buy Sell Code] = 'B' 
then  1 else -1 end * t.[Open Amount]) as [OPEN MTM ($)],

sum((t2.[Weighted Average Settled Pair Off Price] - t2.[Trade price decimal])/100 * case when t2.[Buy Sell Code] = 'B' 
then  1 else -1 end * ISNULL(PO.[Pairoff Amount],0)) as [Unsettled Pairoffs/ AOTs ($)],

sum((t.[Current value decimal] - t.[Trade price decimal])/100 * case when t.[Buy Sell Code] = 'B' 
then  1 else -1 end * t.[Open Amount]) + sum((t2.[Weighted Average Settled Pair Off Price] - t2.[Trade price decimal])/100 * case when t2.[Buy Sell Code] = 'B' 
then  1 else -1 end * ISNULL(PO.[Pairoff Amount],0)) as [TOTAL MTM Exposure ($)]

from
[la-w08-qrm-db-1].qrmprod.dbo.vw_QRM_Trades t2
inner join 
[la-w08-qrm-db-1].qrmprod.dbo.VW_QRM_TRADE_PAIROFFS PO 
ON 
PO.[In Ticket Number] = t2.[Ticket number] 
and PO.[Portfolio ID] = t2.[Portfolio ID]
and t2.[derivative type] = 'F'                      -- note repeat below
and t2.[forward type] ='MBS'                        
and t2.[Counterparty Code] not in ('PLS', 'PNCO')
and t2.[Portfolio ID] in  (1,7)
and t2.[Settlement date] > GETDATE(),

prod.dbo.vw_QRM_Trades t,
prod.dbo.portdesc p,
prod.dbo.cptyall c, 
prod.dbo.VW_MB_ACTIVE_RUN r,
pulsar.dbo.CntrPrtySetup CS,
pulsar.dbo.CntrPrtyTiers CT
where
 r.mrktid =  1 
 And r.asmpid =  1 
 And r.cyclid =  1
 and r.compid = t.[Company ID]  
 and r.portid = t.[Portfolio ID]
 and p.PORTID = t.[Portfolio ID]
 and c.COUNTERPTY = t.[Counterparty Code] --key piece of code
 and cs.CNTRPTY_NO = c.CNTRPTY_NO
 and cs.PortID = t.[Portfolio ID]
 and cs.Tier = ct.Tier
 and t.[derivative type] = 'F'                   -- note repeat above
 and t.[forward type] ='MBS'
 and t.[Counterparty Code] not in ('PLS', 'PNCO')
 and t.[Portfolio ID] in  (1,7)
 and t.[Open Amount] > 0
 group by
 p.Name,  c.CNTRPTY_DS , t.[Counterparty Code], cs.Tier  -- yes this
 order by
 p.Name,  c.CNTRPTY_DS , t.[Counterparty Code], cs.Tier   -- and this

这样做的方法是实际使用UNION,以便按照顺序将三个表连接在一起,并给定我想要从每个表获得的属性。最终我成功地完成了整个存储过程

如果您展示一些示例数据和预期结果,可能会有所帮助…?我需要再增加4个信誉点来发布输出图像:(您对最终结果的描述令人困惑。如果您是表X和表Y的内部连接,您不应该以不在表X中的交易对手结束(除非交易对手在表Y中且不包括在联接中)。此外,如果您想要在结果集中包含在表X中但不包含在联接中的行,那么为什么要进行内部联接而不是左联接?请澄清您需要在结果集中包含哪些数据,以及这些数据在表X和表Y中的位置。因此,每行代表一个交易对手的行,应该是所有有OPEN MTM($)!=0和/或未结算的PAIROFF/AOT($)!=0。是的,在这种情况下,交易对手不会只显示表X,如果表X中没有数据,只有名称,而表Y中有该名称的数据,则表X包含交易对手的名称和用于计算未结MTM的数据。表Y包含一些用于计算Pairoff MTM的数据,其余数据为实际上在表X中。但是,交易对手可以有两个中的一个,两个都有,或者两者都没有,我希望看到交易对手在其中一个存在以及两者都存在的情况下列出(通过Open MTM和Pairoff MTM)。