我有以下(我知道在语法上是不正确的,甚至可能是荒谬的):
and lp.lease_current_stop_date
case when @lease_expiry_period = 01
then
between dateadd(MONTH, +1,
getdate())
else
between dateadd(MONTH, +2,
getdate())
Run Code Online (Sandbox Code Playgroud)
我只是想知道实现这个目标的最佳方法是什么?我正在尝试用以上方法做的是:
*当@lease_expiry_period等于01时,显示所有租约从现在起一个月内到期.当@lease_expiry_period等于02时,显示所有租约从现在起两个月后到期.*
表现说明
值得注意的是,为了简单起见,我没有在我的例子中截断日期.因为这是使用月份getdate()应该是:
Dateadd(d,0,datediff(d,0,getdate()))
Run Code Online (Sandbox Code Playgroud)
为了最好的表现.
我昨天发布了以下问题:where子句中的多个'in'语句需要相互匹配
在这里有一些关于Oracle中的一个功能的讨论在Microsoft SQL中不存在,具体的代码行是:
where (suite_id,lease_id) in (('CCBG08','205059'),('CCBG14','152424'),('CCCF048','150659'))
Run Code Online (Sandbox Code Playgroud)
假设我们有一个表(但有更多行):
suite_id lease_id
CCBG08 150659
CCBG14 152424
我在此推断为Microsoft SQL创建以下解决方案:
select *
from property.lease_period
where (suite_id + ' ' + lease_id)
in (
('CCBG08 205059'),
('CCBG14 152424'),
('CCCF048 150659')
)
Run Code Online (Sandbox Code Playgroud)
不幸的是,做这样的事情对性能的影响是非常显着的(因为没有使用索引).我想知道如何改进这个?
出于测试目的,我想知道是否可以组合以下两个选项:
begin transaction
select x
from example_table
update example_table
set x = 'new value'
select x
from example_table
rollback transaction
Run Code Online (Sandbox Code Playgroud)
基本上,我想看到一个结果输出,如:
列名称,更新的列名称
我确信我认为这是可能的,但是有没有办法合并这两个查询?
查询#1:
select distinct
count(l.lease_id) as 'Count_Transactions_ALL',
sum(l.net_area) as 'Total_Area_ALL'
from
lease_deal.lease l
where
l.deal_approved_date >= @dateFrom
and l.deal_approved_date <= @dateTo
and l.lease_status in(@leaseStatus)
Run Code Online (Sandbox Code Playgroud)
查询#2:
select distinct
count(l.lease_id) as 'Count_Transactions_NEW',
from
lease_deal.lease l
where
l.deal_approved_date >= @dateFrom
and l.deal_approved_date <= @dateTo
and l.lease_status in(@leaseStatus)
and l.negotiation_type = 'NEW'
Run Code Online (Sandbox Code Playgroud)
我想要的输出是:
Count_Transactions_ALL,Total_Area_All,Count_Transactions_NEW
x,y,z
我正在尝试比较两种不同的列类型(不是我做的,是数据转换项目的一部分).一个表格guid存储类似于以下内容:
0CAF3FBC-3C76-420B-B0C4-42867551E3B5
Run Code Online (Sandbox Code Playgroud)
另一个存储如下:
{0CAF3FBC-3C76-420B-B0C4-42867551E3B5}
Run Code Online (Sandbox Code Playgroud)
在这一列上加入这两个表的最佳方法是什么(不幸的是,这是两者的主键).到目前为止,我已经试过铸造一个表作为一个GUID(没有成功),并试图建立一个类似的语句 - 但一直不知道该如何处理这个.
任何帮助将非常感谢.
编辑:
如果它是数据,这在语法上是否正确?
inner join report_temp.workflow_lease_proposal lp
on wif.form_guid like '%' + lp.form_guid + '%'
Run Code Online (Sandbox Code Playgroud) 每当我读到C中的程序执行时,它对函数执行的说法就越少.我仍然试图找出当程序从另一个函数调用到它返回的时间开始执行时函数会发生什么?函数参数如何存储在内存中?
我有以下查询:
-- Compare current period to historical data
select Name ,
avg(TimeProcessing + TimeRendering + TimeDataRetrieval) / 1000 as 'Current Month' ,
isnull(count(TimeProcessing), 0) as 'Sample' ,
min(l2.[Avg_Exec_Time_Previous_Month]) as 'Previous Month' ,
isnull(min(l2.[Executions_Last_Month]), 0) as 'Sample' ,
min(l3.[Avg_Exec_Time_Two_Months_Ago]) as 'Two Months ago' ,
isnull(min(l3.[Executions_Two_Months_Ago]), 0) as 'Sample'
from marlin.report_execution_log l
inner join marlin.report_catalog c on l.ReportID = c.ItemID
left outer join (
select
l2.ReportID ,
(
avg(l2.TimeProcessing + l2.TimeRendering
+ l2.TimeDataRetrieval) / 1000
) as 'Avg_Exec_Time_Previous_Month' ,
count(l2.TimeProcessing) as 'Executions_Last_Month' …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用create语句来调试问题但是我的错误信息确实没有任何意义.
该脚本是:
CREATE TABLE marlin.SupportLog
(
IssueID INTEGER UNIQUE NOT NULL,
TypeID INTEGER NOT NULL ,
IssueDescription VARCHAR(5000) NOT NULL ,
MinutesSpent INTEGER NOT NULL ,
PriorityID INTEGER NOT NULL ,
UserID INTEGER NOT NULL ,
SubmittedDate DATETIME NOT NULL DEFAULT SYSDATETIME() ,
LastModifiedDate DATETIME NULL DEFAULT SYSDATETIME() ,
LastModifiedUserID INTEGER NULL
CONSTRAINT SupportLog_pk
PRIMARY KEY NONCLUSTERED (IssueID)
CONSTRAINT TypeID_fk
FOREIGN KEY (TypeID)
REFERENCES marlin.SupportIssueType(TypeID)
CONSTRAINT SLPriorityID_fk
FOREIGN KEY (PriorityID)
REFERENCES marlin.SupportPriority(PriorityID)
CONSTRAINT UserID_fk
FOREIGN KEY (UserID)
REFERENCES marlin.SupportUsers(UserID)
); …Run Code Online (Sandbox Code Playgroud) 我意识到这在语法上很糟糕,但我认为它在某种程度上解释了我正在尝试做的事情。本质上,我有一个批处理作业,它将每天早上在一个小表上运行,作为规范的一部分,我需要在每次加载之前创建一个备份,以便报告可以访问。
到目前为止我所拥有的是:
select *
into report_temp.MSK_Traffic_Backup_ + getdate()
from property.door_traffic
Run Code Online (Sandbox Code Playgroud)
我怎样才能实现这个功能,或者我应该考虑用更好的方式来做这个吗?
我在查询中找到了以下一行,无论我怎么想它,我都不明白它的目的是什么......请你帮我理解为什么这会出现在where子句中以及如何它读取伪代码?
DATEADD(year,
DATEDIFF(year, Convert(datetime,upvHD.PropertyVal), GETDATE()),
Convert(datetime,upvHD.PropertyVal)
) > GETDATE()
Run Code Online (Sandbox Code Playgroud)