Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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 根据声明的值运行两个不同的SELECT查询之一_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql 根据声明的值运行两个不同的SELECT查询之一

Sql 根据声明的值运行两个不同的SELECT查询之一,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,例如,如何基于参数运行两个不同的SELECT查询之一 if (x=1) then SELECT Product_Name, Pro_ID FROM Store else SELECT [Product_Name] FROM [Store] WHERE (Supplier_ID = 3) 您可以在以下内容中使用: IF (@x = 1) BEGIN SELECT Product_Name, Pro_ID FROM Store END ELSE BEGIN SELECT [Pr

例如,如何基于参数运行两个不同的SELECT查询之一

if (x=1)
then
SELECT Product_Name, Pro_ID FROM Store
else
SELECT [Product_Name] FROM [Store] WHERE (Supplier_ID = 3)
您可以在以下内容中使用

IF (@x = 1)
BEGIN
   SELECT Product_Name, Pro_ID FROM Store    
END
ELSE
BEGIN
   SELECT [Product_Name] FROM [Store] WHERE (Supplier_ID = 3)
END
或更短的方式:

IF (@x = 1) 
   SELECT Product_Name, Pro_ID FROM Store      
ELSE 
   SELECT [Product_Name] FROM [Store] WHERE (Supplier_ID = 3)
您可以在以下内容中使用

IF (@x = 1)
BEGIN
   SELECT Product_Name, Pro_ID FROM Store    
END
ELSE
BEGIN
   SELECT [Product_Name] FROM [Store] WHERE (Supplier_ID = 3)
END
或更短的方式:

IF (@x = 1) 
   SELECT Product_Name, Pro_ID FROM Store      
ELSE 
   SELECT [Product_Name] FROM [Store] WHERE (Supplier_ID = 3)

可能下面的代码会很有用。如果我理解正确的话。这段代码在SQLServer2012中运行良好

--Creating a Table.
CREATE TABLE #MyTable 
    (
    Column1 VARCHAR(10), 
    Column2 VARCHAR(10),
    OptionalColumn VARCHAR(10)
    )
--Inserting value to the Table.
INSERT INTO #MyTable
VALUES('Value 1', 'Value 1','Optional Value')

--IF ELSE Logic to desired output.
DECLARE @Check bit 
SET @Check = 0

IF @Check = 1 
    (
    SELECT 
        Column1, 
        Column2
    FROM 
        #MyTable
    )
ELSE
   (
    SELECT 
        Column1, 
        Column2,
        OptionalColumn
    FROM 
        #MyTable
    )

可能下面的代码会很有用。如果我理解正确的话。这段代码在SQLServer2012中运行良好

--Creating a Table.
CREATE TABLE #MyTable 
    (
    Column1 VARCHAR(10), 
    Column2 VARCHAR(10),
    OptionalColumn VARCHAR(10)
    )
--Inserting value to the Table.
INSERT INTO #MyTable
VALUES('Value 1', 'Value 1','Optional Value')

--IF ELSE Logic to desired output.
DECLARE @Check bit 
SET @Check = 0

IF @Check = 1 
    (
    SELECT 
        Column1, 
        Column2
    FROM 
        #MyTable
    )
ELSE
   (
    SELECT 
        Column1, 
        Column2,
        OptionalColumn
    FROM 
        #MyTable
    )

你不能在
开始
之后做吗?@sagi我误解了你,你是什么意思?你不能在
开始
之后做吗?@sagi我误解了你,你是什么意思?你显示了两个不同列的查询。因此有两件不同的事情。通常会有一个应用程序将第一个或第二个查询发送到DBMS。如果列是相同的(因此两个查询都将返回product_name和pro_id,在您的示例中,第二个查询可能会返回null for pro_id),那么您可以编写一个组合这两个查询的查询。您将显示具有不同列的两个查询。因此有两件不同的事情。通常会有一个应用程序将第一个或第二个查询发送到DBMS。如果列是相同的(因此两个查询都将返回product_name和pro_id,在您的示例中,第二个查询可能会返回null for pro_id),那么您可以编写一个组合这两个查询的查询。