資料清理

出自 ProgWiki
前往: 導覽搜尋

用途

  • 將跨Table或是樹狀或網狀Table的資料,根據資料的特性,清理成一個或數個,簡化過的Table。這樣在使用時(如List列表)的效能會快很多。

作法

1.先建立【目標的Table】

CREATE TABLE [dbo].[Table1](
	[ID] [varchar](12) ,
	[col2] [varchar](12) ,
	[col3] [int] NULL,
	[col4] [int] NULL
) ON [PRIMARY];

2.先Select出必要的PK與FK欄位Insert到【目標的Table】

INSERT INTO Table1 (ID, col2) 
	SELECT (ID, col2) 
	from Table2;

3.依序以Update方式,將整理好的資料Update到【目標的Table】

update Table1
	set col3=sum(coalesce(b.SubTotal,0))
	from  Table1 as a, Table3 as b
        where a.ID=b.ID;
 
update Table1
        set col4=max(coalesce(b.SubTotal,0))
	from  Table1 as a
	left join Table3 as b on a.ID=b.ID;