2014-02-11 151 views
0

我在这里有一些小问题。声明并插入新表并在新表中插入新行

我必须从已经存在的表中声明并创建一个新表。

在新表中,我必须插入新行。

我正在处理以下代码,我可以用新行创建一个新表,但其他行缺失。

请帮帮我。

Declare @NOA table 
(
[ID] Varchar(256), 
[Groupname] Varchar(256), 
[Mis_Code] Varchar(256), 
[Caption] Varchar(256), 
[Amount] Varchar(256), 
[AverageBalance] Varchar(256), 
[Year] Varchar(256), 
[Period] Varchar(256), 
[Category] Varchar(256), 
[ProductCode] Varchar(256), 
[RevExp] Varchar(256) 
); 
INSERT INTO @NOA 
(ID,Groupname, Mis_Code,Caption,Amount,AverageBalance,Year,Period,Category,ProductCode,RevExp) 
Select a.[ID],'Count of existing accounts',a.[Mis_Code],a.[Caption], 
(a.[Amount] - n.[Amount]),a.[AverageBalance],a.[Year],a.[Period],a.[Category],a.[ProductCode],a.[RevExp] 
FROM (SELECT * FROM dbo.ProductSummaryMetrics WHERE [Groupname] = 'Count of active accounts') a 
    JOIN (SELECT * FROM dbo.ProductSummaryMetrics WHERE [Groupname] = 'Count of new account opened (MTD)') n 
    ON a.[Mis_Code] = n.[Mis_Code] 
    select distinct Groupname from @NOA 

与上面的代码 我得到的输出

Groupname 
-------------------------- 
Count of existing accounts 

在哪里,因为我想获得这样的

Groupname 
-------------------------- 
Count of existing accounts 
Count of active accounts 
Count of new account opened (MTD) 
+1

SQL Server或MySQL的?挑一个 – Tanner

+0

为什么不是两个?为什么不Zoidberg? –

+0

这不是MySQL。用'[..]'围住实体不允许在那里 –

回答

0

我能理解它的所有组名出。

谢谢。

这是如下

Declare @NOA table 
(
[ID] int, 
[Groupname] Varchar(500), 
[Mis_Code] Varchar(500), 
[Caption] Varchar(500), 
[Amount] Decimal(38,0), 
[AverageBalance] Decimal(38,6), 
[Year] int, 
[Period] int, 
[Category] Varchar(50), 
[ProductCode] Varchar(50), 
[RevExp] Decimal(38,6) 
) 
Insert into @NOA 
(
[ID], 
[Groupname], 
[Mis_Code], 
[Caption], 
[Amount], 
[AverageBalance], 
[Year], 
[Period], 
[Category], 
[ProductCode], 
[RevExp] 
) 
(Select 
[ID], 
[Groupname], 
[Mis_Code], 
[Caption], 
[Amount], 
[AverageBalance], 
[Year], 
[Period], 
[Category], 
[ProductCode], 
[RevExp] 
from [dbo].[ProductSummaryMetrics]) 

INSERT INTO @NOA 
(ID,Groupname, Mis_Code,Caption,Amount,AverageBalance,Year,Period,Category,ProductCode,RevExp) 
Select a.[ID],'Count of existing accounts',a.[Mis_Code],a.[Caption], 
(a.[Amount] - n.[Amount]),a.[AverageBalance],a.[Year],a.[Period],a.[Category],a.[ProductCode],a.[RevExp] 
FROM (SELECT * FROM @NOA WHERE [Groupname] = 'Count of active accounts') a 
    JOIN (SELECT * FROM @NOA WHERE [Groupname] = 'Count of new account opened (MTD)') n 
    ON (a.[Mis_Code] = n.[Mis_Code] and a.[Caption] = n.[Caption] and a.[Period] = n.[Period]) 
    select distinct Groupname from @NOA