如何根据条件从选择查询中选择想要的列

时间:2019-01-10 09:42:11

标签: sql sql-server tsql

我有返回的选择查询 ID,名称,说明,价格

我正在尝试获取ID,根据条件单独定价,它应该显示名称,说明

const books = {
  1: {
    id: 1,
    name: 'Harry Potter Series',
  },

谢谢

4 个答案:

答案 0 :(得分:0)

@show =1

if @show = 1 
begin 
select id, name, description, price from tbl
end
else begin
select id, price from tbl
end

答案 1 :(得分:0)

您可以连接所需的列并执行查询。

DECLARE @filter AS Integer
DECLARE @columns AS nvarchar(50)
DECLARE @sql AS nvarchar(50)

Set @filter = 1

if @filter = 0 
begin 
Set @columns = 'id, name, description, price'
end
else begin
Set @columns = 'id, name'
end

set @sql = 'select ' + @columns +  ' from tbl'

EXECUTE sp_executesql @sql
print @sql

答案 2 :(得分:0)

基于您的comment

  

我将show参数设置为0或1,如果0只需要选择id,价格则要通过1来选择所有4列

CREATE PROCEDURE MyProc
  @Show BIT = 1 --i pass show parameter as 0 or 1 That means BIT Datatype(True/False)
AS
  IF @Show = 0
    SELECT ID, Price --if 0 only have to select id , price
    FROM Table
      ELSE
        SELECT * --if i pass 1 it select all 4 column
        FROM Table

答案 3 :(得分:0)

您的所有回答对我都有很大帮助,谢谢。 最后我去了这个方法在字符串concat上工作 字段是ID,名称,描述,价格

声明@id int;
声明@sqlcommand nvarchar(max);
声明@visible int;
设置@sqlcommand ='select id,'+ case @visible = 1时然后是'name,description'else'end +',tbl价格                       其中id = @id'

执行sp_executesql @sqlCommand,N'@ id int',@ id = @ id

如果我通过可见= 1 结果将是 ID名称降序价格

可见= 0 身份证价格

谢谢