-- Test run on Microsoft SQL Server 2005 Standard Edition
-- Tested on 2009-05-04 by Lars Rönnbäck
IF EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[AN_Anchor]') AND TYPE IN (N'U'))
DROP TABLE [dbo].[AN_Anchor]
CREATE TABLE AN_Anchor (
AN_ID INT NOT NULL,
PRIMARY KEY(AN_ID)
);
IF EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[ANAT1_AnchorAttribute1]') AND TYPE IN (N'U'))
DROP TABLE [dbo].[ANAT1_AnchorAttribute1]
CREATE TABLE ANAT1_AnchorAttribute1 (
AN_ID INT NOT NULL,
ANAT1_AnchorAttribute1Value CHAR(10) NOT NULL,
PRIMARY KEY(AN_ID)
);
IF EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[ANAT2_AnchorAttribute2]') AND TYPE IN (N'U'))
DROP TABLE [dbo].[ANAT2_AnchorAttribute2]
CREATE TABLE ANAT2_AnchorAttribute2 (
AN_ID INT NOT NULL,
ANAT2_AnchorAttribute2Value CHAR(10) NOT NULL,
ANAT2_FromDate datetime NOT NULL,
PRIMARY KEY(AN_ID, ANAT2_FromDate)
);
IF EXISTS (SELECT * FROM sys.views WHERE object_id =
OBJECT_ID(N'[dbo].[lAN_Anchor]'))
DROP VIEW [dbo].[lAN_Anchor]
GO
CREATE VIEW lAN_Anchor
AS
SELECT
AN.AN_ID,
ANAT1.ANAT1_AnchorAttribute1Value,
ANAT2.ANAT2_AnchorAttribute2Value,
ANAT2.ANAT2_FromDate
FROM
AN_Anchor AN
LEFT JOIN
ANAT1_AnchorAttribute1 ANAT1
ON
ANAT1.AN_ID = AN.AN_ID
LEFT JOIN
ANAT2_AnchorAttribute2 ANAT2
ON
ANAT2.AN_ID = AN.AN_ID
AND
ANAT2.ANAT2_FromDate = (
SELECT
MAX(sub.ANAT2_FromDate)
FROM
ANAT2_AnchorAttribute2 sub
WHERE
sub.AN_ID = AN.AN_ID
);
GO
INSERT INTO AN_Anchor (
AN_ID
)
VALUES
(1);
INSERT INTO AN_Anchor (
AN_ID
)
VALUES
(2);
INSERT INTO AN_Anchor (
AN_ID
)
VALUES
(3);
UPDATE statistics AN_Anchor;
INSERT INTO ANAT1_AnchorAttribute1 (
AN_ID,
ANAT1_AnchorAttribute1Value
)
VALUES
(1, 'Green');
INSERT INTO ANAT1_AnchorAttribute1 (
AN_ID,
ANAT1_AnchorAttribute1Value
)
VALUES
(2, 'Blue');
INSERT INTO ANAT1_AnchorAttribute1 (
AN_ID,
ANAT1_AnchorAttribute1Value
)
VALUES
(3, 'Red');
UPDATE statistics ANAT1_AnchorAttribute1;
INSERT INTO ANAT2_AnchorAttribute2 (
AN_ID,
ANAT2_AnchorAttribute2Value,
ANAT2_FromDate
)
VALUES
(1, 'Car', '2008-01-01');
INSERT INTO ANAT2_AnchorAttribute2 (
AN_ID,
ANAT2_AnchorAttribute2Value,
ANAT2_FromDate
)
VALUES
(1, 'Bus', '2008-12-12');
INSERT INTO ANAT2_AnchorAttribute2 (
AN_ID,
ANAT2_AnchorAttribute2Value,
ANAT2_FromDate
)
VALUES
(2, 'Train', '2008-01-01');
INSERT INTO ANAT2_AnchorAttribute2 (
AN_ID,
ANAT2_AnchorAttribute2Value,
ANAT2_FromDate
)
VALUES
(2, 'Car', '2008-12-12');
INSERT INTO ANAT2_AnchorAttribute2 (
AN_ID,
ANAT2_AnchorAttribute2Value,
ANAT2_FromDate
)
VALUES
(3, 'Train', '2008-01-01');
INSERT INTO ANAT2_AnchorAttribute2 (
AN_ID,
ANAT2_AnchorAttribute2Value,
ANAT2_FromDate
)
VALUES
(3, 'Bus', '2008-12-12');
UPDATE statistics ANAT2_AnchorAttribute2;
GO
SET STATISTICS PROFILE ON;
GO
SET SHOWPLAN_TEXT ON;
GO
SELECT * FROM lAN_Anchor;
SELECT ANAT1_AnchorAttribute1Value FROM lAN_Anchor;
SELECT ANAT2_AnchorAttribute2Value FROM lAN_Anchor;
GO
SET SHOWPLAN_TEXT OFF;
GO
SET STATISTICS PROFILE OFF;
GO