【发布时间】:2018-05-23 18:19:53
【问题描述】:
SQL 新手,对此我完全迷失了。尝试编写查询以提取前一天开设的新帐户,这在周二至周五很容易做到。但是在星期一它是星期天,我所尝试的一切都出错了。
这是我最接近的,但在最后一行仍然是错误的。我想我正在尝试应用 excel vba 类型逻辑,它只是不喜欢我。有人可以看看吗?
谢谢!
SELECT
PortfolioCode as "Account",
f.reportheading1 as "Name",
d.portfoliostatus as "Status",
e.investmentstrategy as "Strategy",
e.brokersource as "Broker",
e.referringfirm as "RefBy",
e.custodian as "Bank",
e.manager as "Manager",
e.administrator as "APM",
d.initialvalue as "Open Value",
b.StartDate as "Start Date",
e.percentcash as "Cash%",
e.targetmvequity as "Eqt Trgt",
e.targetmvfixed as "FI Trgt",
e.munistrategy as "Muni Strat",
e.nationalmuni as "Nat. Muni",
e.statemunistrategy as "State Strat.",
e.residency as "Residency"
FROM
AdvPortfolioBaseExt as A
INNER JOIN
AdvPortfoliobase AS B ON A.PortfolioBaseID = b.PortfolioBaseID
INNER JOIN
advportfolio AS C ON A.PortfolioBaseID = c.PortfolioID
INNER JOIN
advapp.vportfolio AS D ON A.PortfolioBaseID = D.PortfolioID
INNER JOIN
advportfoliobaseext AS E ON A.portfoliobaseid = e.portfoliobaseID
INNER JOIN
advapp.vportfoliobase AS F ON a.PortfolioBaseID = f.PortfolioBaseID
WHERE
c.portfoliostatus <> 'Closed'
AND IIF(DATEPART(dw, GETDATE()) = 2, b.startdate > GETDATE() - 3, b.startdate > GETDATE()-1)
【问题讨论】:
-
作为一般性能问题,不看你问题的细节,你应该调用一次GetDate(),并存储它的值,否则每次被引用都会调用。
标签: sql-server tsql date conditional