我所拥有的是由于外部列而返回两行的联合查询。它在上半部分返回一行''
,就像它的假设一样,在下半部分返回在连接中找到的实际字段。如果连接中没有任何内容,我基本上需要有''
行。我理解联盟的性质重复数据删除,我理解为什么这不是重复数据删除,但我不知道如何得到它所以我只有连接中的行有一个''
。
SELECT Me, Ope, Dd,U11, Id3, Legal
, PAI = (SELECT tbluser.user FROM tbluser WHERE tblmat.PAI = tbluser.userid)
, Ial = (SELECT tbluser.user FROM tbluser WHERE tblmat.Id3 = tbluser.userid)
, '' AS Outside, Dagal
FROM tblmat
WHERE MStatus = 'Open'
AND (mgroup = 'Cas' OR templategroup = 'Sub' OR tmattertemplate = 'Ss')
AND (Opte <= CONVERT (NCHAR (8), GETDATE (), 112)
AND Opte >= DateADD (mm, -6, GETDATE ()))
AND lookup2 IN('NOL','NH','NE')
UNION
SELECT Me, Ope, Dd, U11, Id3, Legal
, PAI = (SELECT tbluser.user FROM tbluser WHERE tblmat.PAI = tbluser.userid)
, Ial = (SELECT tbluser.user FROM tbluser WHERE tblmat.Id3 = tbluser.userid)
, tblCon.ContactName AS Outside, Dagal
FROM ttblmat
JOIN tblMatRelatedItems ON tblmat.me = tblMatRelatedItems.me
JOIN tblcon ON tblMatRelatedItems.relatedkey = tblcon.contactid
WHERE MStatus = 'Open'
AND (mgroup = 'Cas' OR templategroup = 'Sub' OR tmattertemplate = 'Ss')
AND (Opte <= CONVERT (NCHAR (8), GETDATE (), 112)
AND Opte >= DateADD (mm, -6, GETDATE ()))
AND lookup2 IN('NOL','NH','NE')
AND tblmatterRelateditems.RelatedItem = 'Contact'
AND tblcontacts.contacttype = 'Managing Partner'
答案 0 :(得分:1)
您可以尝试围绕另一个查询包装整个事物。您没有指定数据库,但语法如下所示:
SELECT Me, Ope, Dd, U11, Id3, Legal, PAI, Ial, MAX(Outside), Dagal FROM
( your current UNION query)
GROUP BY Me, Ope, Dd, U11, Id3, Legal, PAI, Ial, Dagal
答案 1 :(得分:0)
尝试使用join 这会有所帮助 如果两个表中的条件不匹配,则内连接不会给出结果
答案 2 :(得分:0)
http://msdn.microsoft.com/en-us/library/ms190349.aspx
您的示例可能看起来像这样(完全未经测试,可能无法返回正确的结果。这是一个指导原则):
SELECT Me, Ope, Dd, U11, Id3, Legal
, PAI = (SELECT tbluser.user FROM tbluser WHERE tblmat.PAI = tbluser.userid)
, Ial = (SELECT tbluser.user FROM tbluser WHERE tblmat.Id3 = tbluser.userid)
, COALESCE(tblCon.ContactName, '') AS Outside, Dagal
FROM ttblmat
JOIN tblMatRelatedItems ON tblmat.me = tblMatRelatedItems.me
JOIN tblcon ON tblMatRelatedItems.relatedkey = tblcon.contactid
WHERE MStatus = 'Open'
AND (mgroup = 'Cas' OR templategroup = 'Sub' OR tmattertemplate = 'Ss')
AND (Opte <= CONVERT (NCHAR (8), GETDATE (), 112)
AND Opte >= DateADD (mm, -6, GETDATE ()))
AND lookup2 IN('NOL','NH','NE')
AND tblmatterRelateditems.RelatedItem = 'Contact'
AND tblcontacts.contacttype = 'Managing Partner'
答案 3 :(得分:0)
您可以使用单个左外连接,并在 on 子句中为您提供连接约束,以完成您的任务
SELECT
Me,
Ope,
Dd,
U11,
Id3,
Legal,
PAI = (SELECT tbluser.user FROM tbluser WHERE tblmat.PAI = tbluser.userid),
Ial = (SELECT tbluser.user FROM tbluser WHERE tblmat.Id3 = tbluser.userid),
isnull(tblCon.ContactName,'') AS Outside,
Dagal
FROM
ttblmat
LEFT OUTER JOIN
tblMatRelatedItems
ON
tblmat.me = tblMatRelatedItems.me and
tblmatterRelateditems.RelatedItem = 'Contact'
LEFT OUTER JOIN
tblcon
ON
tblMatRelatedItems.relatedkey = tblcon.contactid and
tblcon.contacttype = 'Managing Partner'
WHERE
MStatus = 'Open' AND
(mgroup = 'Cas' OR templategroup = 'Sub' OR tmattertemplate = 'Ss') AND
(Opte <= CONVERT (NCHAR (8), GETDATE (), 112) AND
Opte >= DateADD (mm, -6, GETDATE ())) AND
lookup2 IN('NOL','NH','NE')