【问题标题】:Show and Not show a column in SELECT statement by using WHEN clause or something like this?使用 WHEN 子句或类似的方法在 SELECT 语句中显示和不显示列?
【发布时间】:2017-06-02 04:54:29
【问题描述】:

我想编写如下查询:

我不想使用 where 子句。我想在-----中写一些不再显示A的东西。我认为这是不可能的,因为在那之后,我们可以将值分配给 A 而不是删除 A

Select
(CASE WHEN A>0 THEN (A) ELSE ----- END),
(CASE WHEN A>0 THEN (A) ELSE ----- END)
from table

【问题讨论】:

  • 我不知道你在问什么。请编辑您的问题,并使用一些示例表数据向我们展示您的想法。
  • 需要在case中选择多列还是单列
  • @kiarash-moshar 我在下面添加了答案,请检查。
  • @tim 据我了解,我已经回答了这个问题,这就是用户可能的意思

标签: mysql sql sql-server tsql


【解决方案1】:

这是 SQL Server 实现(假设只删除一列)。 数据库 [学校]

表格脚本

CREATE TABLE [dbo].[Matches]
(
    [FootballerName] [varchar](100) NULL,
    [Goal] [int] NULL,
    [Tournament] [varchar](100) NULL
)  

插入声明

insert into Matches(FootballerName,Goal,Tournament)
select 'Messi ', 3 ,'La liga' union
select 'Ronaldo ', 5 ,'UEFA' union
select 'Surez ', 2 ,'La liga';

查询结果(从选择语句中删除列目标)

Declare @TableName varchar(100)
SET @TableName='Matches'
Declare @ColumnToRemove varchar(1000)
SET @ColumnToRemove='Goal'

DECLARE @ListOfColumn VARCHAR(8000)
SELECT @ListOfColumn = COALESCE(@ListOfColumn + ',', '') + CAST(column_name AS VARCHAR)
FROM INFORMATION_SCHEMA.columns
WHERE TABLE_NAME=@TableName  and table_catalog='School' and Column_Name<>@ColumnToRemove

Declare @Query varchar(1000)
SET @Query ='Select ' + @ListOfColumn +' from ' +@TableName
EXEC(@Query)

查询结果(删除一列)

FootballerName  Tournament
--------------  ---------------
Messi           La liga
Ronaldo         UEFA
Surez           La liga

结果(包含所有列)

FootballerName  Goal    Tournament
--------------  ----    ----------- 
Messi           3       La liga
Ronaldo         5       UEFA
Surez           2       La liga

【讨论】:

  • @kiarash-moshar 请检查这是否是必需的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
相关资源
最近更新 更多