我有非常基本的SQL体验,并且已经坚持了几天这个SQL问题。 我有2张桌子。我需要将3列信息从一个表移动到另一个表。
表A,表I将移动信息转换为8列,其中3列设置为不接受空值。
如何移动3列并跳过或插入' 0'进入需要值的列?
我正在使用MS SQL server 2005 express。 这就是我到目前为止所做的:
INSERT INTO account (sSurname, sName, sIdNo)
SELECT Client.LASTNAME, Client.FIRSTNAME, Client.DATEOFBIRTH
FROM Client
INNER JOIN Account__MEMBER
ON Account__MEMBER.AccountKEY=Client.AccountKEY
ORDER BY Client.LASTNAME;
我试图对此进行研究,但没有发现任何有用的东西。
答案 0 :(得分:0)
使用IsNULL,如果您的目标是插入一些默认值..
INSERT INTO account (sSurname, sName, sIdNo)
SELECT
ISNULL(Client.LASTNAME, 0) AS sSurname
,ISNULL(Client.FIRSTNAME,0) AS sName
,ISNULL(Client.DATEOFBIRTH,0) AS sIdNo
FROM Client
INNER JOIN Account__MEMBER
ON Account__MEMBER.AccountKEY=Client.AccountKEY
ORDER BY Client.LASTNAME;
如果要过滤掉null,请使用where子句
WHERE Client.LASTNAME IS NOT NULL OR COLUMN2 IS NOT NULL...
如果你想更新,请尝试这样的事情。
UPDATE account
sSurname= Client.LASTNAME
,sName= Client.FIRSTNAME
,sIdNo= Client.DATEOFBIRTH
FROM Client C
INNER JOIN Account__MEMBER AM ON AM.AccountKEY=C.AccountKEY
WHERE -- FILTER COLUMNS THAT ARE NULL
--E.G. AM.ID IS NOT NULL OR c.LASTNAME IS NOT NULL
答案 1 :(得分:0)
解决方案1:
INSERT INTO account (sSurname, sName, sIdNo, AccountNo, AccDate, CurrentAddress)
SELECT Client.LASTNAME, Client.FIRSTNAME, Client.DATEOFBIRTH, 0 AS 'AccountNo',
GetDate() as 'AccDate', 'N/A' as 'CurrentAddress'
FROM Client
INNER JOIN Account__MEMBER
ON Account__MEMBER.AccountKEY=Client.AccountKEY
ORDER BY Client.LASTNAME;
解决方案2:
您可以在列属性中为这些列添加默认值 Sql Server Management工作室。