我管理一个应用程序,该应用程序有多个用户通过 Web 前端将数据输入到 MSSQL 数据库中。每个单独的“记录”在多个表中可以有大约 100 个数据库列(有时在同一个表中有多个行)。编写 SQL 查询将在每个“记录”中输出 1 行,其中包含我们用于报告目的所需的所有列,这是相对简单的,例如:
Assessor Date Length Colour Weight
Steve 2/4/17 23.4 NULL 45
John 4/4/17 NULL Blue NULL
Brenda 4/4/17 NULL NULL NULL
Run Code Online (Sandbox Code Playgroud)
我想生成一个简单的输出,列出未记录数据的所有内容,即保持 NULL 的字段。例如:
Assessor Date Field
Steve 2/4/17 Colour
John 4/4/17 Length
John 4/4/17 Weight
Brenda 4/4/17 Length
Brenda 4/4/17 Length
Brenda 4/4/17 Colour
Brenda 4/4/17 Weight
Run Code Online (Sandbox Code Playgroud)
目前我已经尝试了以下方面的内容:
select
assessor
,date
,Field = 'Length'
from
dbo.table1
where [Length] is NULL
UNION ALL
select
assessor
,date
,Field = 'Colour'
from …
Run Code Online (Sandbox Code Playgroud)