[英]How to use `OR` condition in sql statement?
我想在下面的sql語句中使用'OR'條件請幫我這樣做。
SELECT DATE, SecurityId
FROM StateStreet
INNER JOIN Securities ON StateStreet.SecurityID = Securities.securityid
AND ( (SecurityName LIKE '% R V %'
AND Quantity < 0
AND PortfolioId =@portfolioID)
OR (SecurityName NOT LIKE '% R V %'
AND Quantity > 0
AND PortfolioId=@PortfolioID)
OR (Value = Quantity
AND Securities.PortfolioId =@PortfolioID)
)
WHERE CONVERT(DATETIME,PeriodEndDate) = @PositionDate
請幫我在上述聲明中使用OR條件,我需要在OR條件下檢查3個語句。
看起來你忘記了WHERE
子句:
SELECT
DATE,
SecurityId
FROM
StateStreet
INNER JOIN
Securities ON StateStreet.SecurityID = Securities.securityid
WHERE
(SecurityName LIKE '% R V %' AND Quantity < 0 AND PortfolioId = @portfolioID)
OR
(SecurityName NOT LIKE '% R V %' AND Quantity > 0 AND PortfolioId = @PortfolioID)
OR
(Value = Quantity AND Securities.PortfolioId = @PortfolioID)
這是您第二次發布相同的問題。
您正在使用OR條件。
要么您不理解優先級,搜索條件,要么數據不是您所假設的。
訂單是:
按位(你沒有任何這些)
()
不
和
要么
打破查詢。
SELECT DATE, SecurityId, SecurityName, Quantity, Value, PortfolioId
FROM StateStreet
INNER JOIN Securities
ON StateStreet.SecurityID = Securities.securityid
WHERE CONVERT(DATETIME,PeriodEndDate) = @PositionDate
然后
您可以將AND PortfolioId = @ portfolioID拉出來,因為它在每個或作為和
SELECT DATE, SecurityId, SecurityName, Quantity, Value, PortfolioId
FROM StateStreet
INNER JOIN Securities
ON StateStreet.SecurityID = Securities.securityid
AND PortfolioId = @portfolioID
WHERE CONVERT(DATETIME,PeriodEndDate) = @PositionDate
SELECT DATE, SecurityId, SecurityName, Quantity, Value, PortfolioId
FROM StateStreet
INNER JOIN Securities
ON StateStreet.SecurityID = Securities.securityid
AND PortfolioId = @portfolioID
AND ( Value = Quantity
OR ( SecurityName LIKE '% R V %' )
)
WHERE CONVERT(DATETIME,PeriodEndDate) = @PositionDate
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.