想象一下,我想從[FormValues]
獲得一個動態報告作爲數據,基於列的[ReportItems]
作爲標題。TSQL從兩個表格創建一個動態報告,一個表格包含標題,另一個表格,數據
我真的很困惑如何做到這一點,並嘗試了很多方法,但沒有一個能正常工作。
我應該可以給一個[ReportID]過程並得到結果。
[FormID]
和[FieldID]
是兩個表之間的關係密鑰。
任何形式的幫助將不勝感激。
CREATE TABLE #ReportItems(
ReportItemID [uniqueidentifier] NOT NULL primary key,
ReportID [uniqueidentifier] NOT NULL,
FormID [uniqueidentifier] NOT NULL,
FieldID [uniqueidentifier] NOT NULL,
Title nvarchar(100) NOT NULL
)
GO
insert into #ReportItems
select '5674d274-b146-4251-be0d-a15000e7cefa', '597d37c0-563b-42f0-99be-a15000dc7a65', '01304636-fabe-4a3e-9487-a14b012f9a61', 'ba6b9b1a-92ef-4905-830a-a15000d05f7a', 'First Name'
insert into #ReportItems
select '5674d274-b146-4252-be0d-a15000e7cefa', '597d37c0-563b-42f0-99be-a15000dc7a65', '01304636-fabe-4a3e-9487-a14b012f9a61', 'ba6b9b1a-92ef-4905-830a-a15000d05f7b', 'Last Name'
insert into #ReportItems
select '5674d274-b146-4253-be0d-a15000e7cefa', '597d37c0-563b-42f0-99be-a15000dc7a65', '01304636-fabe-4a3e-9487-a14b012f9a61', 'ba6b9b1a-92ef-4905-830a-a15000d05f7c', 'Age'
GO
CREATE TABLE #FormValues(
ValueID uniqueidentifier NOT NULL primary key,
FormID uniqueidentifier NULL,
FieldID uniqueidentifier NOT NULL,
UserName nvarchar(100) NOT NULL,
Value nvarchar(max) null
)
GO
insert into #FormValues
select 'af6dc400-3972-49ff-9711-a1520002359e', '01304636-fabe-4a3e-9487-a14b012f9a61', 'ba6b9b1a-92ef-4905-830a-a15000d05f7a', 'user 1', 'Mike'
insert into #FormValues
select 'af6dc400-3972-49ff-9721-a1520002359e', '01304636-fabe-4a3e-9487-a14b012f9a61', 'ba6b9b1a-92ef-4905-830a-a15000d05f7b', 'user 1', 'Oscar'
insert into #FormValues
select 'af6dc400-3972-49ff-9731-a1520002359e', '01304636-fabe-4a3e-9487-a14b012f9a61', 'ba6b9b1a-92ef-4905-830a-a15000d05f7c', 'user 1', '20'
insert into #FormValues
select 'af6dc400-3972-49ff-9741-a1520002359e', '01304636-fabe-4a3e-9487-a14b012f9a61', 'ba6b9b1a-92ef-4905-830a-a15000d05f7a', 'user 2', 'Merry'
insert into #FormValues
select 'af6dc400-3972-49ff-9761-a1520002359e', '01304636-fabe-4a3e-9487-a14b012f9a61', 'ba6b9b1a-92ef-4905-830a-a15000d05f7c', 'user 2', '23'
insert into #FormValues
select 'af6dc400-3972-49ff-9771-a1520002359e', '01304636-fabe-4a3e-9487-a14b012f9a61', 'ba6b9b1a-92ef-4905-830a-a15000d05f7a', 'user 3', 'Alen'
insert into #FormValues
select 'af6dc400-3972-49ff-9781-a1520002359e', '01304636-fabe-4a3e-9487-a14b012f9a61', 'ba6b9b1a-92ef-4905-830a-a15000d05f7b', 'user 3', 'Escott'
insert into #FormValues
select 'af6dc400-3972-49ff-9791-a1520002359e', '01304636-fabe-4a3e-9487-a14b012f9a61', 'ba6b9b1a-92ef-4905-830a-a15000d05f7c', 'user 3', '28'
GO
Select * from #ReportItems
Select * from #FormValues
GO
而且我想這樣的報告結果:
User Name | First Name | Last Name | Age
User 1 | Mike | Oscar | 20
User 2 | Merry | | 23
User 3 | Alen | Escott | 28
User n | ... | ... | ...
drop table #ReportItems
drop table #FormValues
非常感謝您的完美答案。如果您不介意我需要另外兩個選項:1.如何通過[ReportID]請求結果2.如何按[ReportItems]中名爲[SortOrder]的列對標題進行排序? – Kardo 2013-02-13 16:47:48
@Kardo你可以用額外的數據編輯sql小提琴嗎?當你編輯它時,在這裏發佈鏈接。或者用附加細節創建一個新問題。 – Taryn 2013-02-13 16:51:44
其實你的答案是完美的,並且工作正常。我想對ReportItems中名爲[SortOrder]的列進行排序(例如:USERNAME | FIRST NAME | LAST NAME | AGE)。 – Kardo 2013-02-13 16:59:48