0
我正在構建一個腳本,用於檢查添加到表中的四個新列中的不準確數據輸入。其中三個檢查相對簡單,但第四個檢查的字段是一個標誌列(t/f),其值根據兩個標準確定:表中的Start Date小於今天的日期,另一個表中的變量具有具體的價值。爲了做這個檢查,我創建了一個虛擬表,基本上用一個唯一的ID重新創建了標誌列,然後我加入了我想要檢查並查找差異的表上的虛擬表。我問的是如果有辦法直接進行檢查而不必創建一個虛擬表。我已經嘗試了一些東西,但是我的SQL技能並不是非常先進的。檢查差異而無需先創建虛擬表
我目前正在使用的代碼如下:
CREATE TABLE check_is_billable
AS
SELECT csv.service_line_items.id AS service_line_items_id,
csv.media_plans.id AS media_plan_id,
cast(csv.service_line_items.start_date AS DATE) < CURRENT_DATE AND csv.media_plans.aasm_state = 'approved' AS is_billable_check
FROM csv.service_line_items
INNER JOIN csv.media_plans ON csv.service_line_items.media_plan_id = csv.media_plans.id
ORDER BY service_line_items_id;
SELECT
'Is Billable Check' AS test,
COUNT(*) AS error_count
FROM csv.check_is_billable
INNER JOIN csv.service_line_items ON (csv.service_line_items.id = csv.check_is_billable.service_line_items_id
AND csv.check_is_billable.media_plan_id = csv.service_line_items.media_plan_id
AND csv.check_is_billable.is_billable_check != cast(csv.service_line_items.is_billable AS BOOLEAN));
DROP TABLE check_is_billable;
基本上,我想知道,如果有,我可以修改的中間步驟,使得我沒有創建和刪除虛擬表的方式。
您正在使用什麼RDBMS? (SQL Server,Oracle,DB2,MySQL,Postgresql等),您可以使用簡單的子查詢或公用表表達式來完成此操作。 – xQbert
另外,提供樣本數據和期望的結果。 –
我正在使用Postgresql –