我有两个表连接,以便我可以比较一个字段并从一个表中提取记录,其中被比较的字段不在两个表中:
Table A
---------
Comp Val
111 327
112 234
113 265
114 865
Table B
-----------
Comp2 Val2
111 7676
112 5678
Run Code Online (Sandbox Code Playgroud)
所以我正在做的是在Comp-Comp2上连接两个表,然后我希望从表A中选择表B中不存在corrssponding Comp的所有值.在这种情况下,查询应该导致:
Result
---------
Comp Val
113 265
114 865
Run Code Online (Sandbox Code Playgroud)
这是查询:
select * into Result from TableA
inner join TableB
on (TableB.Comp2 = TableA.Comp)
where TableB.Comp2 <> TableA.Comp
Run Code Online (Sandbox Code Playgroud)
问题是,它从两个表中提取值.有没有办法单独从TableA中选择值而不明确指定字段?
我试图在SQL查询中实现一些逻辑来创建一个类似于以下的表:
CountNum Identifier
20 a
40 a
60 a
20 b
40 b
20 c
20 d
40 d
20 e
40 e
60 e
80 e
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,逻辑是这样的,只要Identifer保持不变,CountNum就会向下一条记录添加20.如果标识符发生变化,则从20开始.
到目前为止,我已经实现了以下伪代码:
Do the following for all records:
Update table set CountNum=20 for first Identifier
If Identifier is duplicated, add 20 to CountNum for each duplicate.
Run Code Online (Sandbox Code Playgroud)
无论如何在SQL服务器中实现这个作为查询?
我也试图将结果移动到一个新表中.我试过了:
INSERT INTO tblPayments select Identifier AS PaymentsIdentifier
ROW_NUMBER() OVER(PARTITION BY Identifier ORDER BY Identifier)*20 CountNum
FROM dbo.oldPayments
Run Code Online (Sandbox Code Playgroud)
但是它会生成错误:
Column name or number of supplied values …Run Code Online (Sandbox Code Playgroud) 我正在尝试用一年中几个月的当前期间更新一列。因此,我使用带有月份变量的 switch 语句。但是,我收到错误:
必须声明标量变量
我尝试了以下方法:
DECLARE @DATE_AP dateTime
DECLARE @month varchar(max)
SET @DATE_AP= DATEADD(year, 0, GETDATE())
SET @month_AP = DATENAME(Month, @DATE_AP)
SELECT CAST(@month as VARchar(10))
select @periodsetvar = 'select CASE @month
when ''October'' then
''Update tbltimes set Periodyr = 01''
when ''November'' then
''Update tbltimes set Periodyr = 02''
when ''December'' then
''Update tbltimes set Periodyr = 03''
when ''January'' then
''Update tbltimes set Periodyr = 04''
when ''February'' then
''Update tbltimes set Periodyr = 05''
END'
exec (@periodsetvar)
Run Code Online (Sandbox Code Playgroud)
和: …
以下SQL语句设置特定列的日期:
DATEDUE=convert(varchar,GETDATE(),103 )
Run Code Online (Sandbox Code Playgroud)
但是,它设置了当前日期,例如05/08/2015.我想做的是将它设置为相同的dd/mm/yyyy格式,但将日期设置为15日,将月份设置为上个月,因此05/08/2015应该是15/07/2015.