我有下表,如果開始日期和結束日期的差異大于 1 個月,我想將日期范圍分成多行,并且取決于該期間有多少個月,將“凈價”分成這么多行件。
現有表如下所示:
| 訊息編號 | 研究人員 | AbDat | 比斯達特 | 凈賭注 |
|---|---|---|---|---|
| ALT_102420 | 1 | 01.04.2016 | 30.06.2016 | 1702.98 |
| ALT_102420 | 2 | 01.07.2016 | 30.09.2016 | 1779.63 |
| ALT_102420 | 3 | 01.11.2016 | 30.11.2016 | 1020.60 |
結果表應如下所示:
| 訊息編號 | 研究人員 | AbDat | 比斯達特 | 凈賭注 |
|---|---|---|---|---|
| ALT_102420 | 1 | 01.04.2016 | 30.04.2016 | 567.66 |
| ALT_102420 | 1 | 01.05.2016 | 31.05.2016 | 567.66 |
| ALT_102420 | 1 | 01.06.2016 | 30.06.2016 | 567.66 |
| ALT_102420 | 2 | 01.07.2016 | 30.07.2016 | 593.21 |
| ALT_102420 | 2 | 01.08.2016 | 31.08.2016 | 593.21 |
| ALT_102420 | 2 | 01.09.2016 | 30.09.2016 | 593.21 |
| ALT_102420 | 3 | 01.11.2016 | 30.11.2016 | 1020.60 |
我已使用此鏈接上的解決方案進行了嘗試,但無法使其正常作業。即使是“最純粹”的復制粘貼形式,它也只是將 AbDat 和 BisDat 設定為相同的日期,并且不會創建新行。在拆分價格和創建新行時,我會非常感謝任何形式的幫助。
uj5u.com熱心網友回復:
首先,創建一個小查詢并將其保存為Ten:
SELECT DISTINCT Abs([id] Mod 10) AS N FROM MSysObjects;
然后在笛卡爾(乘法)查詢中使用它來生成月份:
SELECT
Betrag.MessNr,
Betrag.RechnNr,
DateAdd("m", [N], [AbDat]) AS AbDatum,
DateAdd("d", -1, DateAdd("m", [N] 1, [AbDat])) AS BisDatum,
[NettBetr] / (1 DateDiff("m", [AbDat], [BisDat])) AS NettBetrag
FROM
Betrag,
Ten
WHERE
Ten.N <= DateDiff("m", [AbDat], [BisDat])
ORDER BY
Betrag.MessNr,
Betrag.RechnNr,
DateAdd("m", [N], [AbDat]);
輸出:
| 訊息編號 | 研究人員 | 抽象基準 | 基準面 | 凈賭注 |
|---|---|---|---|---|
| ALT_102420 | 1 | 01-04-2016 | 30-04-2016 | 567,66 |
| ALT_102420 | 1 | 01-05-2016 | 31-05-2016 | 567,66 |
| ALT_102420 | 1 | 01-06-2016 | 30-06-2016 | 567,66 |
| ALT_102420 | 2 | 01-07-2016 | 31-07-2016 | 593,21 |
| ALT_102420 | 2 | 01-08-2016 | 31-08-2016 | 593,21 |
| ALT_102420 | 2 | 01-09-2016 | 30-09-2016 | 593,21 |
| ALT_102420 | 3 | 01-11-2016 | 30-11-2016 | 1020,60 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/527379.html
標籤:sqlvba毫秒访问
上一篇:VBA:范圍選擇
下一篇:如何在顫振中從JSON中獲取價值
