Sql server SQL Server-选择查询中的选择条件
我有两个表Companies1和Companies2,其中Companies2表中始终存在公司名称,但可能在Companies1表中,也可能不在其中 我需要应用此条件:Sql server SQL Server-选择查询中的选择条件,sql-server,sql-server-2012,Sql Server,Sql Server 2012,我有两个表Companies1和Companies2,其中Companies2表中始终存在公司名称,但可能在Companies1表中,也可能不在其中 我需要应用此条件: CONVERT(VARCHAR(11), GETDATE(), 112) BETWEEN Start AND End 仅当名称存在于Companys1表中时: 我如何才能做到这一点?请尝试类似的方法。另外,请不要在where子句中的列周围使用函数,因为它会使查询不可争论 这只是一个逻辑问题——使用适当的AND、OR和括号,你就
CONVERT(VARCHAR(11), GETDATE(), 112) BETWEEN Start AND End
仅当名称存在于Companys1表中时:
我如何才能做到这一点?请尝试类似的方法。另外,请不要在where子句中的列周围使用函数,因为它会使查询不可争论
这只是一个逻辑问题——使用适当的AND、OR和括号,你就可以做到。我不太明白你在问什么,但用逻辑。。。还有一个条款你想把这个条件用于什么目的?您想要实现什么?如果将left join更改为join,您将得到[Companys1]表中存在[name]的行,只有Companys1表具有开始和结束列。因此,如果我查询仅存在于Companys2中的公司名称,则此查询无法从Companys2表中获取名称。如果我要再添加一个条件,如ifC1.Company1\u name不为空,则再添加一个条件,并将C1.company\u listed='Yes'添加到现有查询中。类似于此,我和C1.company\u已列出空或C1。列出的公司=“是”
SELECT DISTINCT
COALESCE(NULLIF(Company1_Name, ''), Company2_Name) Company
FROM
[Companies1] AS C1
LEFT JOIN
[Companies2] AS C2 ON (C1.Company1_Name = C2.Company2_Name)
WHERE
Company1_Name = ('XYZ')
AND CONVERT(VARCHAR(11), GETDATE(), 112) BETWEEN Start AND End
select DISTINCT COALESCE(NULLIF(Company1_Name,''),Company2_Name) Company
FROM [Companies1] as C1 left join [Companies2] AS C2
on(C1.Company1_Name=C2.Company2_Name) where Company1_Name=('XYZ')
AND
CONVERT(VARCHAR(11), getdate(), 112) >=
CASE WHEN C1.Company1_Name IS NOT NULL THEN [Start] ELSE CONVERT(VARCHAR(11), getdate(), 112) END
AND
CONVERT(VARCHAR(11), getdate(), 112) <=
CASE WHEN C1.Company1_Name IS NOT NULL THEN [End] ELSE CONVERT(VARCHAR(11), getdate(), 112) END
SELECT DISTINCT COALESCE(NULLIF(Company1_Name,''),Company2_Name) Company
FROM [Companies1] AS C1 LEFT JOIN [Companies2] AS C2 ON (C1.Company1_Name=C2.Company2_Name) WHERE EXISTS Company1_Name=('XYZ') AND
CONVERT(VARCHAR(11), getdate(), 112)
IN BETWEEN Start AND End