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完成的。请重试?如果这对您有所帮助,请记住勾选此项作为您的答案;)请记住,在您上面的问题中,您在总数后面缺少一个逗号。。。只是一个建议。。。