小编Red*_*vil的帖子

我们可以在没有else语句的情况下编写case语句

我有这个问题:

select case when id=1 then 'A'
when id=2 then 'B'
end 
from test
Run Code Online (Sandbox Code Playgroud)

它给了我o/p as

Id
A
B
NULL
NULL
NULL

我不希望NULL在输出中有值,我只想在A和B中进行比较,是否可能在case语句中.

sql sql-server select case sql-server-2008

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

NULL在连接中不匹配

我有2张桌子A和B.

表A.

subgroup    |   maingroup   |   
------------------------------------------  
NULL        |   A       |   
NULL        |   A       |   
Top     |   B       |   
Top     |   B       |   
Run Code Online (Sandbox Code Playgroud)

表B.

subgroup
---------------     
top             
NULL    
Run Code Online (Sandbox Code Playgroud)

我正在运行此查询.

select * from a
join b
on a.subgroup=b.subgroup
group by a.subgroup,a.maingroup,b.subgroup
Run Code Online (Sandbox Code Playgroud)

我得到了这个输出

subgroup    |   maingroup   |   subgroup    
------------------------------------------------------- 
Top     |   B       |   Top 
Run Code Online (Sandbox Code Playgroud)

我担心的是为什么NULL不匹配,并给我输出像NULL A Null.

我正在使用MSSQL

sql sql-server join

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

需要上个月在sql中只有3个字母JUL

我想打印JUL,这个查询返回AUG:

declare @a varchar(19)

set @a = left(datename(month, getdate()), 3)

print @a
Run Code Online (Sandbox Code Playgroud)

但是当我把我的代码编写为

declare @a varchar(19)

set @a = left(datename(month, getdate()), 3) - 1

print @a
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

消息245,级别16,状态1,行3
语法错误将nvarchar值'Aug'转换为数据类型int的列.

sql sql-server sql-server-2008

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

SQL Server 中第一个实例 0 其余的变为 1

我有一个场景,其中 IFIDCodeInsertDate相同的,如果它是第一个条目,那么它将是 0,否则是 1。

演示数据:

CREATE TABLE #test 
(
     ID int,
     code int,
     InsertDate datetime2
)

Insert into #test values (1,1,'2019-09-17 03:19:00.0000000')
Insert into #test values (1,1,'2019-09-17 03:19:00.0000000')
Insert into #test values (1,1,'2019-09-17 03:19:00.0000000')
Insert into #test values (2,1,'2019-09-17 03:19:00.0000000')
Insert into #test values (3,1,'2019-09-17 03:19:00.0000000')
Run Code Online (Sandbox Code Playgroud)

预期产出

ID  code    InsertDate              flag   
-----------------------------------------
1    1  2019-09-17 03:19:00.0000000  0     
1    1  2019-09-17 03:19:00.0000000  1     
1    1  2019-09-17 03:19:00.0000000  1     
2    1  2019-09-17 03:19:00.0000000  0     
3    1 …
Run Code Online (Sandbox Code Playgroud)

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

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

getdate() 函数

如何在使用getdate()函数时只显示日期?

当我使用时

select getdate() as Today's Date
Run Code Online (Sandbox Code Playgroud)

它给了我:

2016-05-18 08:32:07.100
Run Code Online (Sandbox Code Playgroud)

但我只需要:

 2016-05-18
Run Code Online (Sandbox Code Playgroud)

如何得到这个?

sql sql-server

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

当monthid为2位时,SQL Server 2008 R2中的连接失败

我有一个表和服务器是SQL Server 2008 R2,我们不能使用concat功能

YearID  |   MonthId     
--------+----------
2017    |    1  
2014    |    5  
2014    |   10  
2016    |   12
Run Code Online (Sandbox Code Playgroud)

我希望输出为

201701   
201405   
201410   
201612
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试了什么

select 
    cast(YearId as varchar(50)) + '0' + cast(MonthId as varchar(50)) 
from 
    TEST
Run Code Online (Sandbox Code Playgroud)

我得到的输出为

201701     
201405   
2014010   
2016012  
Run Code Online (Sandbox Code Playgroud)

如果monthID是2位数,则表示失败.

如何解决这种情况?

sql t-sql sql-server concatenation sql-server-2008-r2

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

使用内部联接加入2个具有不同名称的表

我先有2张桌子

之前

lotname     
--------    
R16A        
R17A        
R17B        
R18A        
R18B        
Run Code Online (Sandbox Code Playgroud)

第二是

lotname     
--------        
R16AA       
R17A        
R17B        
R18AAA      
R18B        
Run Code Online (Sandbox Code Playgroud)

我想加入这两个表,以便所有匹配R16A都匹配R16AA

如果我写这个代码

select * from before
join after
    on before.lotname = after.lotname
Run Code Online (Sandbox Code Playgroud)

O/P

lotname     lotname     
R17A        R17A        
R17B        R17B        
R18B        R18B        
Run Code Online (Sandbox Code Playgroud)

我想要o/p之类的

Lotname     Lotname     
----------------------------                
R16A        R16AA       
R17A        R17A        
R17B        R17B        
R18A        R18AAA      
R18B        R18B        
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2008

0
推荐指数
1
解决办法
47
查看次数