Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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
Sql server SQL Server-选择查询中的选择条件_Sql Server_Sql Server 2012 - Fatal编程技术网

Sql server SQL Server-选择查询中的选择条件

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和括号,你就

我有两个表Companies1和Companies2,其中Companies2表中始终存在公司名称,但可能在Companies1表中,也可能不在其中

我需要应用此条件:

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