小编Mic*_*l A的帖子

情况下 - 我做错了什么?

我有以下(我知道在语法上是不正确的,甚至可能是荒谬的):

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)

为了最好的表现.

sql t-sql sql-server sql-server-2008

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

where子句中的字符串连接

我昨天发布了以下问题: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)

不幸的是,做这样的事情对性能的影响是非常显着的(因为没有使用索引).我想知道如何改进这个?

sql t-sql database sql-server-2008

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

在查询中显示两次列,第二次显示更新/设置后的数据

出于测试目的,我想知道是否可以组合以下两个选项:

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)

基本上,我想看到一个结果输出,如:

列名称,更新的列名称

sql t-sql sql-server sql-server-2005 sql-server-2008

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

有没有办法合并这两个简单的查询

我确信我认为这是可能的,但是有没有办法合并这两个查询?

查询#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

sql t-sql database sql-server sql-server-2008

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

我如何将这两者结合在一起?Varchar guid和guid类型都是主键

我正在尝试比较两种不同的列类型(不是我做的,是数据转换项目的一部分).一个表格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)

sql t-sql sql-server sql-server-2008

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

从被调用的时间到它返回的时间,在C中调用的函数会发生什么?

每当我读到C中的程序执行时,它对函数执行的说法就越少.我仍然试图找出当程序从另一个函数调用到它返回的时间开始执行时函数会发生什么?函数参数如何存储在内存中?

c function

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

如何在结果中合并两行但不是所有结果?

我有以下查询:

-- 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)

sql t-sql database sql-server sql-server-2008

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

Create语句不适用于四个约束,但可以使用两个约束吗?

我正在尝试使用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)

sql t-sql sql-server database-design sql-server-2008

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

如何按日期时间生成表名?

我意识到这在语法上很糟糕,但我认为它在某种程度上解释了我正在尝试做的事情。本质上,我有一个批处理作业,它将每天早上在一个小表上运行,作为规范的一部分,我需要在每次加载之前创建一个备份,以便报告可以访问。

到目前为止我所拥有的是:

select  *
into    report_temp.MSK_Traffic_Backup_ + getdate()
from    property.door_traffic
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这个功能,或者我应该考虑用更好的方式来做这个吗?

sql t-sql sql-server sql-server-2008

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

这条线说什么/做什么?

我在查询中找到了以下一行,无论我怎么想它,我都不明白它的目的是什么......请你帮我理解为什么这会出现在where子句中以及如何它读取伪代码?

      DATEADD(year,              
             DATEDIFF(year, Convert(datetime,upvHD.PropertyVal), GETDATE()),
             Convert(datetime,upvHD.PropertyVal) 
             ) > GETDATE()
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2008

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