I have a requirement to show values from multiple tables to a single row . CREATE TABLE [dbo].[Table1Result](
[Table1ResultID] [int] IDENTITY(1,1) NOT NULL,
[CreateDate] [datetime] NOT NULL,
[CreatedByUserID] [int] NOT NULL,
)
CREATE TABLE [dbo].[Table2Result](
[Table2ResultID] [int] IDENTITY(1,1) NOT NULL,
[Table1Result] [int] NOT NULL, --primary key of table1
[Table2Name] [nvarchar](255) NULL,
[Table2Overall] [bit] NOT NULL,
[Table2GenterID] [int] NULL,
[CombinedTable2Outcome] [bit] NULL,
[Display] [bit] NOT NULL,
[IsActive] [bit] NOT NULL,
[HasOutcome] [bit] NOT NULL,
)
CREATE TABLE [dbo].[Table3Result](
[Table3ResultID] [int] IDENTITY(1,1) NOT NULL,
[Table3ResultID] [int] NOT NULL, --primary key of table 2 ..here foreigh key
[Table3Text] [nvarchar](max) NULL,
[Table3Value] [int] NULL,
[Table3StringValue] [nvarchar](max) NULL,
[Table3BooleanValue] [bit] NULL,
[Table3DateTimeValue] [datetime] NULL,
[Table3DecimalValue] [decimal](18, 2) NULL,
[Table3Dropdown] [bit] NULL,
[Table3Validation] [bit] NOT NULL,
[Table3DetailID] [int] NULL,
[Table3QuestionID] [int] NOT NULL,
[CombinedTable3Outcome] [bit] NOT NULL,
)
上表中有3个表。这里第一个表只有一行用于特定表table1resultid。有一个外键关键船,第二个表即table2result。有一个table1resultid(从第一个表)将有多个记录。类似于table2和table3是相关的,依此类推。我的要求是为特定id显示1行。这是一个特殊的table1resulti我需要从所有表中获取数据并显示在一行。我希望列标题将作为我的result中的列标题。我用Google搜索它,发现我可以通过pivot获取它。我无法理解它。如果有人可以帮助我弄清楚它会让我的一天。
表1中的数据:
1 1-01-2015 5
2 1-08-2016 7
表2样本数据:
1 1 Heading FALSE NULL NULL TRUE TRUE FALSE
2 1 ABC FALSE 5 TRUE TRUE TRUE TRUE
3 1 XXX FALSE 5 TRUE TRUE TRUE TRUE
4 1 KKK FALSE FALSE TRUE TRUE FALSE TRUE
5 1 YYY FALSE NULL TRUE TRUE FALSE TRUE
6 2 Heading FALSE NULL NULL TRUE TRUE FALSE
7 2 ABC FALSE 5 TRUE TRUE TRUE TRUE
8 2 XXX FALSE 5 TRUE TRUE TRUE TRUE
9 2 KKK FALSE NULL TRUE TRUE FALSE TRUE
表3:
1 1 NULL NULL NULL TRUE NULL NULL FALSE FALSE NULL 1 FALSE
2 1 asdasd NULL 1 NULL NULL NULL FALSE FALSE NULL 2 FALSE
3 1 sda NULL 22 NULL NULL NULL FALSE FALSE NULL 4 FALSE
4 1 asdasd NULL 3 NULL NULL NULL FALSE FALSE NULL 5 FALSE
5 1 NULL NULL 4 NULL NULL NULL FALSE FALSE NULL 9 FALSE
6 1 NULL NULL 5 NULL NULL NULL FALSE FALSE NULL 10 FALSE
7 1 sda NULL NULL NULL NULL NULL TRUE FALSE NULL 11 FALSE
8 1 NULL NULL NULL TRUE NULL NULL FALSE FALSE NULL 12 FALSE
9 1 NULL 1 NULL NULL NULL NULL FALSE FALSE NULL 13 FALSE
10 2 asdasd NULL a NULL NULL NULL FALSE FALSE 5 17 TRUE
11 2 asdasd NULL b NULL NULL NULL FALSE FALSE 5 18 TRUE
asdasd
13 2 asdasd NULL d NULL NULL NULL FALSE FALSE 5 20 TRUE
答案 0 :(得分:0)
您可以使用连接来完成此操作,但是,单行或不依赖于您的条件(例如,对于同一个table1id,表2可能有2个表用于表1,在这种情况下,我们需要具有一些特定的条件)
SELECT
T1.*
,T2.*
,T3.*
FROM
Table1Result T1
JOIN Table2Result T2
ON T1.TABLE1RESULTID = T2.TABLE1RESULT
JOIN Table3Result T3
ON T2.TABLE2RESULTID = T3.Table3Result -- this field was marked as table3resultid in the question instead of table3result
WHERE
T1.TABLE1RESULTID = 100-- the condition goes here