我正在寻找一个SQL语句或存储过程来将一行中的列子集的值重置为其默认值(如此定义)或者为null.行中还有其他列我不想重置,否则我可以删除该行并创建一个新的行,该行将使用各种默认值进行初始化...这就是我想要的效果,但仅限于列的特定子集.
从概念上讲,我在寻找
UPDATE eirProj
SET <all columns named like 'paf%'> TO THEIR DEFAULT OR NULL
WHERE prjId=@prjId
Run Code Online (Sandbox Code Playgroud)
或至少
UPDATE eirProj
SET pafAuth=<pafAuth default or NULL>, pafComp=<pafComp default or NULL>, paf...
WHERE prjId=@prjId
Run Code Online (Sandbox Code Playgroud)
我试图避免在两个地方冗余地对默认值进行硬编码(表定义和此重置代码).理想情况下但不那么重要我想避免硬编码列名,因此如果通过添加,删除或重命名列来更改子集,它仍然可以工作.
我正在使用SQL Server和特定于T-SQL的解决方案,如果这是唯一的方法.
我的任务是在Access中复制在Filemaker数据库中运行的特定报告.输出应如下所示:
NAME DATE ITEM(S)
Joe 5/2/2012 Gum
Tape
Soap
Ann 5/1/2012 Paper
Bob 5/1/2012 Pen
Paper
记录看起来像这样(这是一个加入"person"和"items"表的查询,它们具有1:多的关系):
NAME DATE ITEM(S) Joe 5/2/2012 Gum Joe 5/2/2012 Tape Joe 5/2/2012 Soap Ann 5/1/2012 Paper Bob 5/1/2012 Pen Bob 5/1/2012 Paper
在报告中,我需要第一个ITEM始终显示在第一个完整的行中; 如果有更多项目,则只应在后续行中列出项目(不应重复NAME和DATE值).
我不太确定哪棵树吠起来:
到目前为止,我唯一能管理的是在人员中进行分组,在组头中使用NAME和DATE,然后将所有项目放在详细信息中,但这并不是我被要求做的事情.
感谢期待"a-ha!".
克里斯