过去几天我一直在为此苦苦挣扎。我正在尝试使用以下SQL查询,该查询在SQL 2008上用于SQL 2000服务器。
发生问题,SQL 2000不支持外部apply命令。是否可以转换我的查询,使其适用于SQL 2000服务器?
SELECT
[Ta_KIB_B].*, (
CASE
WHEN NewKondisi IS NULL THEN
Kondisi
ELSE
NewKondisi
END
) AS lastKondisi,
(
CASE
WHEN KondisiSebelumTA2018 IS NULL THEN
Kondisi
ELSE
KondisiSebelumTA2018
END
) AS KondisiSebelumTA2018,
(
SELECT
SUM (Harga) AS Rharga
FROM
[Ta_KIBBR]
WHERE
[Ta_KIBBR].Kd_Riwayat = 2
AND [Ta_KIB_B].Kd_Bidang = [Ta_KIBBR].Kd_Bidang
AND [Ta_KIB_B].Kd_Unit = [Ta_KIBBR].Kd_Unit
AND [Ta_KIB_B].Kd_Sub = [Ta_KIBBR].Kd_Sub
AND [Ta_KIB_B].Kd_UPB = [Ta_KIBBR].Kd_UPB
AND [Ta_KIB_B].Kd_Aset1 = [Ta_KIBBR].Kd_Aset1
AND [Ta_KIB_B].Kd_Aset2 = [Ta_KIBBR].Kd_Aset2
AND [Ta_KIB_B].Kd_Aset3 = [Ta_KIBBR].Kd_Aset3
AND [Ta_KIB_B].Kd_Aset4 = [Ta_KIBBR].Kd_Aset4
AND [Ta_KIB_B].Kd_Aset5 = [Ta_KIBBR].Kd_Aset5
AND [Ta_KIB_B].No_Register = [Ta_KIBBR].No_Register
AND Tgl_Dokumen > '2017-12-31'
) AS Kapitalisasi_2018,
(
SELECT
COUNT(*) AS Rharga
FROM
[Ta_KIBBR]
WHERE
[Ta_KIBBR].Kd_Riwayat = 2
AND [Ta_KIB_B].Kd_Bidang = [Ta_KIBBR].Kd_Bidang
AND [Ta_KIB_B].Kd_Unit = [Ta_KIBBR].Kd_Unit
AND [Ta_KIB_B].Kd_Sub = [Ta_KIBBR].Kd_Sub
AND [Ta_KIB_B].Kd_UPB = [Ta_KIBBR].Kd_UPB
AND [Ta_KIB_B].Kd_Aset1 = [Ta_KIBBR].Kd_Aset1
AND [Ta_KIB_B].Kd_Aset2 = [Ta_KIBBR].Kd_Aset2
AND [Ta_KIB_B].Kd_Aset3 = [Ta_KIBBR].Kd_Aset3
AND [Ta_KIB_B].Kd_Aset4 = [Ta_KIBBR].Kd_Aset4
AND [Ta_KIB_B].Kd_Aset5 = [Ta_KIBBR].Kd_Aset5
AND [Ta_KIB_B].No_Register = [Ta_KIBBR].No_Register
AND Tgl_Dokumen > '2017-12-31'
) AS Count_Kapitalisasi_2018,
(
SELECT
SUM (Harga) AS Rharga
FROM
[Ta_KIBBR]
WHERE
[Ta_KIBBR].Kd_Riwayat IN (2, 21)
AND [Ta_KIB_B].Kd_Bidang = [Ta_KIBBR].Kd_Bidang
AND [Ta_KIB_B].Kd_Unit = [Ta_KIBBR].Kd_Unit
AND [Ta_KIB_B].Kd_Sub = [Ta_KIBBR].Kd_Sub
AND [Ta_KIB_B].Kd_UPB = [Ta_KIBBR].Kd_UPB
AND [Ta_KIB_B].Kd_Aset1 = [Ta_KIBBR].Kd_Aset1
AND [Ta_KIB_B].Kd_Aset2 = [Ta_KIBBR].Kd_Aset2
AND [Ta_KIB_B].Kd_Aset3 = [Ta_KIBBR].Kd_Aset3
AND [Ta_KIB_B].Kd_Aset4 = [Ta_KIBBR].Kd_Aset4
AND [Ta_KIB_B].Kd_Aset5 = [Ta_KIBBR].Kd_Aset5
AND [Ta_KIB_B].No_Register = [Ta_KIBBR].No_Register
AND Tgl_Dokumen <= '2017-12-31'
) AS Koreksi_Tambah_Harga_SD_2017,
(
SELECT
SUM (Harga) AS Rharga
FROM
[Ta_KIBBR]
WHERE
[Ta_KIBBR].Kd_Riwayat IN (7, 23)
AND [Ta_KIB_B].Kd_Bidang = [Ta_KIBBR].Kd_Bidang
AND [Ta_KIB_B].Kd_Unit = [Ta_KIBBR].Kd_Unit
AND [Ta_KIB_B].Kd_Sub = [Ta_KIBBR].Kd_Sub
AND [Ta_KIB_B].Kd_UPB = [Ta_KIBBR].Kd_UPB
AND [Ta_KIB_B].Kd_Aset1 = [Ta_KIBBR].Kd_Aset1
AND [Ta_KIB_B].Kd_Aset2 = [Ta_KIBBR].Kd_Aset2
AND [Ta_KIB_B].Kd_Aset3 = [Ta_KIBBR].Kd_Aset3
AND [Ta_KIB_B].Kd_Aset4 = [Ta_KIBBR].Kd_Aset4
AND [Ta_KIB_B].Kd_Aset5 = [Ta_KIBBR].Kd_Aset5
AND [Ta_KIB_B].No_Register = [Ta_KIBBR].No_Register
AND Tgl_Dokumen <= '2017-12-31'
) AS Koreksi_Kurang_Harga_SD_2017,
(
SELECT
SUM (Harga) AS Rharga
FROM
[Ta_KIBBR]
WHERE
[Ta_KIBBR].Kd_Riwayat = 21
AND [Ta_KIB_B].Kd_Bidang = [Ta_KIBBR].Kd_Bidang
AND [Ta_KIB_B].Kd_Unit = [Ta_KIBBR].Kd_Unit
AND [Ta_KIB_B].Kd_Sub = [Ta_KIBBR].Kd_Sub
AND [Ta_KIB_B].Kd_UPB = [Ta_KIBBR].Kd_UPB
AND [Ta_KIB_B].Kd_Aset1 = [Ta_KIBBR].Kd_Aset1
AND [Ta_KIB_B].Kd_Aset2 = [Ta_KIBBR].Kd_Aset2
AND [Ta_KIB_B].Kd_Aset3 = [Ta_KIBBR].Kd_Aset3
AND [Ta_KIB_B].Kd_Aset4 = [Ta_KIBBR].Kd_Aset4
AND [Ta_KIB_B].Kd_Aset5 = [Ta_KIBBR].Kd_Aset5
AND [Ta_KIB_B].No_Register = [Ta_KIBBR].No_Register
AND Tgl_Dokumen > '2017-12-31'
) AS Koreksi_Tambah_Harga_2018,
(
SELECT
SUM (Harga) AS Rharga
FROM
[Ta_KIBBR]
WHERE
[Ta_KIBBR].Kd_Riwayat IN (7, 23)
AND [Ta_KIB_B].Kd_Bidang = [Ta_KIBBR].Kd_Bidang
AND [Ta_KIB_B].Kd_Unit = [Ta_KIBBR].Kd_Unit
AND [Ta_KIB_B].Kd_Sub = [Ta_KIBBR].Kd_Sub
AND [Ta_KIB_B].Kd_UPB = [Ta_KIBBR].Kd_UPB
AND [Ta_KIB_B].Kd_Aset1 = [Ta_KIBBR].Kd_Aset1
AND [Ta_KIB_B].Kd_Aset2 = [Ta_KIBBR].Kd_Aset2
AND [Ta_KIB_B].Kd_Aset3 = [Ta_KIBBR].Kd_Aset3
AND [Ta_KIB_B].Kd_Aset4 = [Ta_KIBBR].Kd_Aset4
AND [Ta_KIB_B].Kd_Aset5 = [Ta_KIBBR].Kd_Aset5
AND [Ta_KIB_B].No_Register = [Ta_KIBBR].No_Register
AND Tgl_Dokumen > '2017-12-31'
) AS Koreksi_Kurang_Harga_2018,
LastUpdate,
TanggalPerubahanKondisiTerakhir
FROM
[Ta_KIB_B] OUTER APPLY (
SELECT
TOP 1 [Ta_KIBBR].Kondisi AS NewKondisi
FROM
[Ta_KIBBR]
WHERE
[Ta_KIB_B].Kd_Bidang = [Ta_KIBBR].Kd_Bidang
AND [Ta_KIB_B].Kd_Unit = [Ta_KIBBR].Kd_Unit
AND [Ta_KIB_B].Kd_Sub = [Ta_KIBBR].Kd_Sub
AND [Ta_KIB_B].Kd_UPB = [Ta_KIBBR].Kd_UPB
AND [Ta_KIB_B].Kd_Aset1 = [Ta_KIBBR].Kd_Aset1
AND [Ta_KIB_B].Kd_Aset2 = [Ta_KIBBR].Kd_Aset2
AND [Ta_KIB_B].Kd_Aset3 = [Ta_KIBBR].Kd_Aset3
AND [Ta_KIB_B].Kd_Aset4 = [Ta_KIBBR].Kd_Aset4
AND [Ta_KIB_B].Kd_Aset5 = [Ta_KIBBR].Kd_Aset5
AND [Ta_KIB_B].No_Register = [Ta_KIBBR].No_Register
AND Kd_Riwayat = 1
AND [Ta_KIBBR].Tgl_Dokumen <= '2018-12-31'
ORDER BY
[Ta_KIBBR].Tgl_Dokumen DESC
) AS bb
OUTER APPLY (
SELECT
TOP 1 [Ta_KIBBR].Kondisi AS KondisiSebelumTA2018
FROM
[Ta_KIBBR]
WHERE
[Ta_KIB_B].Kd_Bidang = [Ta_KIBBR].Kd_Bidang
AND [Ta_KIB_B].Kd_Unit = [Ta_KIBBR].Kd_Unit
AND [Ta_KIB_B].Kd_Sub = [Ta_KIBBR].Kd_Sub
AND [Ta_KIB_B].Kd_UPB = [Ta_KIBBR].Kd_UPB
AND [Ta_KIB_B].Kd_Aset1 = [Ta_KIBBR].Kd_Aset1
AND [Ta_KIB_B].Kd_Aset2 = [Ta_KIBBR].Kd_Aset2
AND [Ta_KIB_B].Kd_Aset3 = [Ta_KIBBR].Kd_Aset3
AND [Ta_KIB_B].Kd_Aset4 = [Ta_KIBBR].Kd_Aset4
AND [Ta_KIB_B].Kd_Aset5 = [Ta_KIBBR].Kd_Aset5
AND [Ta_KIB_B].No_Register = [Ta_KIBBR].No_Register
AND Kd_Riwayat = 1
AND [Ta_KIBBR].Tgl_Dokumen <= '2017-12-31'
ORDER BY
[Ta_KIBBR].Tgl_Dokumen DESC
) AS cc
OUTER APPLY (
SELECT
TOP 1 [Ta_KIBBR].Tgl_Dokumen AS TanggalPerubahanKondisiTerakhir
FROM
[Ta_KIBBR]
WHERE
[Ta_KIB_B].Kd_Bidang = [Ta_KIBBR].Kd_Bidang
AND [Ta_KIB_B].Kd_Unit = [Ta_KIBBR].Kd_Unit
AND [Ta_KIB_B].Kd_Sub = [Ta_KIBBR].Kd_Sub
AND [Ta_KIB_B].Kd_UPB = [Ta_KIBBR].Kd_UPB
AND [Ta_KIB_B].Kd_Aset1 = [Ta_KIBBR].Kd_Aset1
AND [Ta_KIB_B].Kd_Aset2 = [Ta_KIBBR].Kd_Aset2
AND [Ta_KIB_B].Kd_Aset3 = [Ta_KIBBR].Kd_Aset3
AND [Ta_KIB_B].Kd_Aset4 = [Ta_KIBBR].Kd_Aset4
AND [Ta_KIB_B].Kd_Aset5 = [Ta_KIBBR].Kd_Aset5
AND [Ta_KIB_B].No_Register = [Ta_KIBBR].No_Register
AND Kd_Riwayat = 1
AND [Ta_KIBBR].Tgl_Dokumen <= '2018-12-31'
ORDER BY
[Ta_KIBBR].Tgl_Dokumen DESC
) AS dd
OUTER APPLY (
SELECT
TOP 1 [Ta_KIBBR].Tgl_Dokumen AS LastUpdate
FROM
[Ta_KIBBR]
WHERE
[Ta_KIB_B].Kd_Bidang = [Ta_KIBBR].Kd_Bidang
AND [Ta_KIB_B].Kd_Unit = [Ta_KIBBR].Kd_Unit
AND [Ta_KIB_B].Kd_Sub = [Ta_KIBBR].Kd_Sub
AND [Ta_KIB_B].Kd_UPB = [Ta_KIBBR].Kd_UPB
AND [Ta_KIB_B].Kd_Aset1 = [Ta_KIBBR].Kd_Aset1
AND [Ta_KIB_B].Kd_Aset2 = [Ta_KIBBR].Kd_Aset2
AND [Ta_KIB_B].Kd_Aset3 = [Ta_KIBBR].Kd_Aset3
AND [Ta_KIB_B].Kd_Aset4 = [Ta_KIBBR].Kd_Aset4
AND [Ta_KIB_B].Kd_Aset5 = [Ta_KIBBR].Kd_Aset5
AND [Ta_KIB_B].No_Register = [Ta_KIBBR].No_Register
AND [Ta_KIBBR].Tgl_Dokumen <= '2019-12-31'
ORDER BY
[Ta_KIBBR].Tgl_Dokumen DESC
) AS ee
任何帮助表示感谢,谢谢
您可以将外部应用应用于相关子查询。
SELECT [ta_kib_b].*,
( CASE
WHEN newkondisi IS NULL THEN kondisi
ELSE newkondisi
END ) AS LASTKONDISI
FROM (SELECT [ta_kib_b].*,
(SELECT TOP 1 [ta_kibbr].kondisi AS NEWKONDISI
FROM [ta_kibbr]
WHERE [ta_kib_b].kd_bidang = [ta_kibbr].kd_bidang
AND [ta_kib_b].kd_unit = [ta_kibbr].kd_unit
AND [ta_kib_b].kd_sub = [ta_kibbr].kd_sub
AND [ta_kib_b].kd_upb = [ta_kibbr].kd_upb
AND [ta_kib_b].kd_aset1 = [ta_kibbr].kd_aset1
AND [ta_kib_b].kd_aset2 = [ta_kibbr].kd_aset2
AND [ta_kib_b].kd_aset3 = [ta_kibbr].kd_aset3
AND [ta_kib_b].kd_aset4 = [ta_kibbr].kd_aset4
AND [ta_kib_b].kd_aset5 = [ta_kibbr].kd_aset5
AND [ta_kib_b].no_register = [ta_kibbr].no_register
AND kd_riwayat = 1
AND [ta_kibbr].tgl_dokumen <= '2018-12-31'
ORDER BY [ta_kibbr].tgl_dokumen DESC) AS newkondisi
FROM ta_kib_b) ta_kib_b