我有这个问题:
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语句中.
我有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
我想打印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的列.
我有一个场景,其中 IFID和Code是InsertDate相同的,如果它是第一个条目,那么它将是 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) 如何在使用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 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位数,则表示失败.
如何解决这种情况?
我先有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)