我有例如目的,下面的表格比較:如何在SQL Server中的前兩行
MTRL表
|MTRL| CODE |
---------------
| 1 | 080109 |
| 2 | 085145 |
| 3 | 084141 |
MTRLINES表
|MTRL| PRICE | FINDOC |
-------------------------
| 1 | 4.95 | 12345 |
| 1 | 4.50 | 23421 |
| 1 | 3.90 | 23499 |
|MTRL| PRICE | FINDOC |
-------------------------
| 2 | 2.95 | 45345 |
我目前使用的那些兩個查詢,然後我將輸出存儲到一個變量。我正在與編程進行比較。 但不是運行兩個查詢,而是運行一個然後輸出。
所以我想比較最後兩個價格。如果最後價格顯著改變,或者只存在一個價格像mtrl2然後輸出價格1
SELECT
, SUB.PRICE
FROM (
SELECT
, ML.PRICE
, rn = row_number() over (PARTITION BY M.CODE ORDER BY FINDOC DESC)
FROM MTRLINES ML
INNER JOIN MTRL M
ON M.MTRL = ML.MTRL AND FINDOC IN (SELECT FINDOC FROM FINDOC WHERE SOSOURCE=1251 AND FPRMS IN (1,2))
WHERE M.SODTYPE=51 AND M.COMPANY=1 AND M.CODE=:kod_an
) sub
WHERE rn IN (1)
這是存儲在可變price1
SELECT
, SUB.PRICE
FROM (
SELECT
, ML.PRICE
, rn = row_number() over (PARTITION BY M.CODE ORDER BY FINDOC DESC)
FROM MTRLINES ML
INNER JOIN MTRL M
ON M.MTRL = ML.MTRL AND FINDOC IN (SELECT FINDOC FROM FINDOC WHERE SOSOURCE=1251 AND FPRMS IN (1,2))
WHERE M.SODTYPE=51 AND M.COMPANY=1 AND M.CODE=:kod_an
) sub
WHERE rn IN (2)
這是存儲在可變price2
我做一些像programmaticaly(這是vbscript):
If ABS(price1-price2)>0.02 Then
Result=Price1
Else
Result=0
End If
我怎麼才能用SQL實現這一點?
這很好!只需用'-'修正'>'謝謝! –
當mtrlines表有一行時,例如一個價格返回0.它應該返回Price1。請看看它。它有兩行或更多行時有效... –
@ F.Mysir。 。 。一種方法是對價格進行計數,並在邏輯中明確包含這些價格 –