Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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
Tsql 使用CASE函数筛选表中的数据_Tsql_Case - Fatal编程技术网

Tsql 使用CASE函数筛选表中的数据

Tsql 使用CASE函数筛选表中的数据,tsql,case,Tsql,Case,我有个小问题。我需要编写一个查询,在表[dbo].[BO\u POS\u Rcp\u Headers]中选择3列,但如果其中一列包含R100以外的值,则需要打印“FAIL”,而不是不正确的行。 链接到表格图片: 如您所见,第8行的值与“WERKS”列中的所有其他行的值不同。我不明白的是如何使它在启动查询时显示FAIL而不是第8行 SELECT WERKS, timestamp, total CASE WHERE WERKS = 'R100' THEN ? ELSE 'FAIL'

我有个小问题。我需要编写一个查询,在表
[dbo].[BO\u POS\u Rcp\u Headers]
中选择3列,但如果其中一列包含R100以外的值,则需要打印“FAIL”,而不是不正确的行。 链接到表格图片:

如您所见,第8行的值与“WERKS”列中的所有其他行的值不同。我不明白的是如何使它在启动查询时显示FAIL而不是第8行

SELECT 
WERKS, timestamp, total
CASE
    WHERE WERKS = 'R100' THEN ?
    ELSE 'FAIL'
FROM [dbo].[BO_POS_Rcp_Headers]

您的语法有一些问题

示例:

CASE
    WHEN 1.condition THEN result1
    WHEN 2.condition THEN result2
    WHEN 3.condition THEN resultN
    ELSE result
END as [Table alias]
Declare  @TableName table(werks varchar(250), timestamp DATE,total varchar(250))

insert into @TableName values
('R100','2015-10-02','0.17'),
('R100','2015-10-02','0.17'),
('R100','2016-07-02','15' ),
('R100','2015-10-22','0.42'),
('R10','2015-11-02','0.45'),
('R10','2015-10-02','12')

SELECT 
    CASE
      WHEN WERKS = 'R100' THEN 'R100'
      ELSE 'FAIL'
    END [WERKS] , timestamp, total
FROM @TableName
WERKS   |timestamp  |total
--------------------------
R100    |2015-10-02 |0.17
R100    |2015-10-02 |0.17
R100    |2016-07-02 |15
R100    |2015-10-22 |0.42
FAIL    |2015-11-02 |0.45
FAIL    |2015-10-02 |12
资料来源:

数据示例:

CASE
    WHEN 1.condition THEN result1
    WHEN 2.condition THEN result2
    WHEN 3.condition THEN resultN
    ELSE result
END as [Table alias]
Declare  @TableName table(werks varchar(250), timestamp DATE,total varchar(250))

insert into @TableName values
('R100','2015-10-02','0.17'),
('R100','2015-10-02','0.17'),
('R100','2016-07-02','15' ),
('R100','2015-10-22','0.42'),
('R10','2015-11-02','0.45'),
('R10','2015-10-02','12')

SELECT 
    CASE
      WHEN WERKS = 'R100' THEN 'R100'
      ELSE 'FAIL'
    END [WERKS] , timestamp, total
FROM @TableName
WERKS   |timestamp  |total
--------------------------
R100    |2015-10-02 |0.17
R100    |2015-10-02 |0.17
R100    |2016-07-02 |15
R100    |2015-10-22 |0.42
FAIL    |2015-11-02 |0.45
FAIL    |2015-10-02 |12
结果示例:

CASE
    WHEN 1.condition THEN result1
    WHEN 2.condition THEN result2
    WHEN 3.condition THEN resultN
    ELSE result
END as [Table alias]
Declare  @TableName table(werks varchar(250), timestamp DATE,total varchar(250))

insert into @TableName values
('R100','2015-10-02','0.17'),
('R100','2015-10-02','0.17'),
('R100','2016-07-02','15' ),
('R100','2015-10-22','0.42'),
('R10','2015-11-02','0.45'),
('R10','2015-10-02','12')

SELECT 
    CASE
      WHEN WERKS = 'R100' THEN 'R100'
      ELSE 'FAIL'
    END [WERKS] , timestamp, total
FROM @TableName
WERKS   |timestamp  |total
--------------------------
R100    |2015-10-02 |0.17
R100    |2015-10-02 |0.17
R100    |2016-07-02 |15
R100    |2015-10-22 |0.42
FAIL    |2015-11-02 |0.45
FAIL    |2015-10-02 |12
为您试试这个

SELECT 
    CASE
      WHEN WERKS = 'R100' THEN 'R100'
      ELSE 'FAIL'
    END [WERKS] , timestamp, total
FROM [dbo].[BO_POS_Rcp_Headers]
选择
时间戳,总计,
案例
当WERKS“R100”时,则“失败”
艾尔斯沃克斯
完[沃克斯]
来自[dbo]。[BO_POS_Rcp_头文件]

我在“total”之后漏掉了一个逗号。

我收到一个错误,它是说第2行-所有列的列名无效第3行-在“CASE”第6行附近的语法无效-在关键字“WERKS”附近的语法不正确,期待对话所有这些都是在Server Management studio中使用transact-Sql完成的。请重试?如果这对您有所帮助,请记住勾选此项作为您的答案;)请记住,在您上面的问题中,您在总数后面缺少一个逗号。。。只是一个建议。。。