這是我當前的SQL查詢。我需要修改這個以下sql查詢需要幫助
SELECT
18 BrokerDealerID,
5 PortfolioID,
PeriodEndDate DATE,
SecurityIdentifier_All.SecurityId,
MAX(
(CASE
WHEN Securities.Quantity < 0 THEN
100 + (100 - LocalPriceAmount)
ELSE
LocalPriceAmount
END
) /100) Mark
FROM
Fireball_Reporting..StateStreet_DailyPosition_Second StateStreet
INNER JOIN
Fireball_Reporting..SecurityIdentifier_All ON StateStreet.CUSIP = SecurityIdentifier_All.Identifier
INNER JOIN
Fireball..TradeBySecurityType Securities ON
Securities.PricingSecurityID = SecurityIdentifier_All.SecurityId AND Securities.Position = 1 AND
(CASE WHEN StateStreet.SecurityName LIKE '% R V %' THEN StateStreet.SharesParValue * -1 ELSE StateStreet.SharesParValue END) = Securities.Quantity
WHERE
CONVERT(DATETIME, StateStreet.PeriodEndDate) = '2012-10-23' [email protected]
GROUP BY
PeriodEndDate,
SecurityIdentifier_All.SecurityId
我需要做的變化在第二條件即
(CASE WHEN StateStreet.SecurityName LIKE '% R V %' THEN StateStreet.SharesParValue * -1 ELSE StateStreet.SharesParValue END) = Securities.Quantity
我給你舉個例子。
我選擇查詢給我下面的輸出
securityname date securityid portfolioid type mark quantity
------------ ---------- ---------- ----------- ---- ------------------ -------------
R V DISH 10/23/2012 4879505 5 CDS 1.0487189900000000 -5000000.0000
R V DISH 10/23/2012 4879505 5 CDS 1.0487189900000000 -2000000.0000
R F DISH 10/23/2012 4879505 5 CDS 0.9512810100000000 3000000.0000
這裏它上面給我3個紀錄爲同樣的安全ID 當我執行合併上述使用導致它僅服用1日直接記錄,如果我不檢查這檢查那Quantity
第二條件,但現在我只想檢查 當在StateStreet.SecurityName LIKE「%RV%」來自其數量以上的結果,可以採取記錄是-
如果沒有的話需要其數量ID的記錄+
我怎麼能改變那個案例陳述?或直接檢查% R V%
在我計算標記的選擇語句? 需要技術幫助。 我是SQL新手。
我想擺在WHERE子句 '(CASE WHEN StateStreet.SecurityName LIKE '%RV%',那麼StateStreet.SharesParValue * -1 ELSE StateStreet.SharesParValue END)' 但得到的錯誤這種情況下聲明: 表達式在'GROUP'附近預期條件的上下文中指定的非布爾型類型。 – Neo
我對你的陳述感到困惑,「......我只需要確保StateStreet.SharesParValue是正面的還是負面的。」SQL Server中的數字怎麼可能不是正面或負面?你是說你需要知道它是正面還是負面? –
@AbeMiessler我需要知道來自其他表的StateStreet.SharesParValue是'-1000'或'1000',因爲依賴於'-'和'+'我需要計算'Mark',因爲我正在合併這些選擇其他表格的值,請幫助我 – Neo