【发布时间】:2012-03-29 09:17:20
【问题描述】:
我在下面写了两个查询,每个查询产生一行数据。
将它们组合在一起的最佳方法是什么,使得我 LEFT 只有一行数据?
这些即将到来 FROM 两个 DISTINCT databases 命名为:[ASN01] 和 [dsi_ASN_dsicx]
我有 70 对这样的数据库,但为了简单起见,我只展示了一个。
三个字母的首字母缩写词 ASN 对于两个数据库名称是通用的这一事实没有错,如果需要,可以作为解决方案的一部分。
当前结果:
网站、Elligence(标题) ASN,100.00
站点,GP_Total(标题) ASN,120.00
期望的结果:
站点、GP_Total、Elligence(标题) ASN, 120.00, 100.00
SELECT 'ASN' AS Site ,
CASE SUM(perdblnc)
WHEN NULL THEN 0
ELSE -1 * SUM(PERDBLNC)
END AS GP_Total
FROM [ASN01].[dbo].[GL10110] T1
LEFT OUTER JOIN [ASN01].[dbo].[GL00105] T2 ON [T1].[ACTINDX] = [T2].[ACTINDX]
WHERE YEAR1 = 2012
AND PERIODID IN ( '2' )
AND ACTNUMST IN ( '4200-0000-C', '6940-0000-C', '6945-0000-C',
'6950-0000-C' )
SELECT 'ASN' AS [Site] ,
SUM(pi.amount) AS [Elligence]
FROM [dsi_ASN_dsicx].dbo.charge c
LEFT JOIN [dsi_ASN_dsicx].dbo.paymentitem pi ON c.idcharge = pi.chargeid
LEFT JOIN [dsi_ASN_dsicx].dbo.payment p ON pi.paymentid = p.idpayment
LEFT JOIN [dsi_ASN_dsicx].dbo.paymenttype pt ON p.paymenttypeid = pt.idpaymenttype
WHERE pi.amount != 0
AND pt.paymentmethod NOT IN ( '5', '7' )
AND pt.paymentmethod IS NOT NULL
AND p.sdate >= '20120201'
AND p.sdate <= '20120229'
【问题讨论】:
-
这看起来像是两组不同的数据。什么定义了公共行?这些查询甚至产生相同数量的行吗?
-
它在帖子中说他从每个查询@Blam 中只得到一行。他希望他们排成一排。
标签: sql-server tsql merge