小编ask*_*low的帖子

算术/逻辑运算基于列值

我想根据我的列值进行算术运算.请考虑以下示例

CREATE TABLE #test
  (
     cont_sal    INT,
     check_value INT,
     operator    VARCHAR(50)
  )

INSERT #test
VALUES (10,20,'+'),
       (20,10,'+'),
       (10,20,'-'),
       (20,10,'-') 
Run Code Online (Sandbox Code Playgroud)

预期结果:

cont_sal    check_value result
--------    ----------- ------
10          20          30
20          10          30
10          20          -10
20          10          10
Run Code Online (Sandbox Code Playgroud)

我可以使用CASE声明来做到这一点.

SELECT cont_sal,
       check_value,
       CASE
         WHEN operator = '+' THEN cont_sal + check_value
         when operator = '-' THEN cont_sal - check_value
       END result
FROM   #test 
Run Code Online (Sandbox Code Playgroud)

但有没有办法动态地做到这一点.操作员可以像任何东西/,%,*.像这样的东西

DECLARE @sql NVARCHAR(max)=''

SET @sql = 'select cont_sal …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2012

11
推荐指数
1
解决办法
1030
查看次数

SQL中最重要的三列

我想比较多个列,并在不同列之间获得最大值

对于三列,我提出了以下查询,该工作正常

SELECT CASE
         WHEN col1 >= col2
              AND col1 >= col3 THEN col1
         WHEN col2 >= col1
              AND col2 >= col3 THEN col2
         WHEN col3 >= col1
              AND col3 >= col2 THEN col3
         ELSE col1
       END AS Max_number 
    FROM   (VALUES (1,2,3),
                   (1,2,3),
                   (1,2,3)) tc (col1, col2, col3) 
Run Code Online (Sandbox Code Playgroud)

但是当我想要比较超过3列时,事情变得越来越复杂.有没有更简单的方法来做到这一点

sql sql-server sql-server-2008

2
推荐指数
1
解决办法
384
查看次数

SQL处理顺序

考虑我有一个查询

select * from A
Except 
select * from B 
union all
select * from B 
except
select * from A
Run Code Online (Sandbox Code Playgroud)

查询处理如下

select * 
from 
(
select * from A
Except 
select * from B 
) a
union all
(
select * from B
Except 
select * from A 
) b
Run Code Online (Sandbox Code Playgroud)

如何在sql中定义处理顺序.在任何情况下它都会这样处理吗?

select * from A
Except 
select * from
(
select * from B 
union all
select * from B 
) a
except
select * from A
Run Code Online (Sandbox Code Playgroud)

sql sql-server except union-all

2
推荐指数
1
解决办法
76
查看次数