2015-09-28 87 views
-2

我正在創建過程從一個表中複製一些列並將'狀態'列設置爲1,但它不工作可以任何一個幫助我?感謝adavance ...我想這....SQL查詢插入數據從一個表到另一個,並將目標表的'狀態'列設置爲1

ALTER PROCEDURE [dbo].[Psettemp] 
AS 
    BEGIN 
     INSERT INTO tblEmailToClient 
        (id, 
        clientName, 
        clientInfoOrgName, 
        clientInfoEmail, 
        RemainingDays) 
     (SELECT a.clientinfoid       AS clientId, 
       (client_FullName)      AS client, 
       client_info_orgname, 
       client_info_email, 
       Datediff(day, Getdate(), WarrentyExpDate) AS RemainingDays 
     FROM tblSales b 
       JOIN tblclient_info a 
       ON b.client_id = a.clientinfoid 
     WHERE Datediff(day, Getdate(), WarrentyExpDate) = 7 
       OR Datediff(day, Getdate(), WarrentyExpDate) = 0) 
    END 
+0

請格式化您的代碼以使其易讀 – Kaf

+0

*什麼*不起作用?你是否收到語法錯誤?那麼你會得到什麼錯誤信息?或者太多/太少的行插入?還是值不正確? –

+0

@ThorstenKettner從第二表中的數據被插入,但我怎樣才能每一行 –

回答

0

爲了設置在每個插入的記錄恆定的(狀態= 1),只需添加文字價值到您的選擇語句。

insert into tblemailtoclient 
(
    id, 
    clientname, 
    clientinfoorgname, 
    clientinfoemail, 
    remainingdays, 
    status 
) 
(
    select 
    ci.clientinfoid, 
    ci.client_fullname, 
    ci.client_info_orgname , 
    ci.client_info_email , 
    datediff(day, getdate(), s.warrentyexpdate), 
    1 
    from tblsales s 
    join tblclient_info ci on s.client_id = ci.clientinfoid 
    where datediff(day, getdate(), s.warrentyexpdate) in (0,7) 
); 

爲了便於閱讀,我更改了別名。總是使用有意義的別名,如s用於銷售,而不是a,b,c ......

我也在select語句中爲所有列添加了別名,所以人們知道列是從哪裏來的。你應該讓這成爲一種習慣。

最後,我將OR子句更改爲IN,這更具可讀性。我刪除了不必要的列別名。

+0

謝謝,我得到了我的答案 –

2

用途:

ALTER PROCEDURE [dbo].[PsetTemp] 
AS 
BEGIN 
    INSERT INTO tblEmailToClient(
      id, 
      clientName, 
      clientInfoOrgName, 
      clientInfoEmail, 
      RemainingDays, 
      status) 
    SELECT a.clientinfoid AS clientId, 
      client_FullName AS client, 
      client_info_orgname, 
      client_info_email, 
      DATEDIFF(DAY,getdate(), WarrentyExpDate) AS RemainingDays, 
      1 AS Status 
    FROM tblSales b 
    JOIN tblclient_info a 
    ON b.client_id=a.clientinfoid 
    WHERE DATEDIFF(DAY,getdate(),WarrentyExpDate) =7 
    OR DATEDIFF(DAY,getdate(),WarrentyExpDate) =0 
END 
+0

從第二表中的數據被插入,但我怎樣才能每行的插入後置柱即「狀態」 = 1 –

+0

@ it'sME 「狀態」在哪個表中?在目標表 – lad2025

+0

「狀態」欄,這應該從第二臺 –

相關問題