数据结构如下
Table 1:
Col1a Col1b Col1c Col1d
-----------------------------
d11a d11b d11c d11d
d12a d12b d12c d12d
Table 2:
Col2a Col2b Col2c Col2d Col2e
-----------------------------------
s21a s21b s21c Col1b SUM(Col1b)
s22a s22b s22c Col1c SUM(Col1c)
s23a s23b s23c Col1c SUM(Col1c)
s24a s23b s23c Col1d SUM(Col1d)
你可以看到我需要做什么。 现在' Col2e '现在是空的,我需要根据'Col2d'中的单元格数据更新它。
注意:两个表都没有任何标识列。
我尝试使用函数,在select查询中进行复制,但由于无法动态选择列,因此无法使用。 我找不到使用Exec / Exec sp_executesql选择/更新的方法。
任何建议都将受到赞赏。
编辑: 我未来的下表可能会用于映射
Table ColumnMapping:
ColRowData ColActualName ColInTable
-----------------------------
QTDCol janQtd Col1b
FYCol janFY Col1c
这就是为什么我希望我的列选择是动态的。
答案 0 :(得分:3)
这是你需要的吗?
// parse from input strings
LocalDateTime start = LocalDateTime.parse(startText, FORMATTER);
LocalDateTime end = LocalDateTime.parse(endText, FORMATTER);
boolean nightTime =
!start.toLocalDate().equals(end.toLocalDate())
|| start.toLocalTime().isBefore(START_TIME)
|| end.toLocalTime().isAfter(END_TIME);
// todo: change output to gui
System.out.println("night time: " + nightTime);
System.out.println("duration : " + Duration.between(start, end).toHours());
答案 1 :(得分:2)
如果我理解你的问题,那么下面的查询应该适合你。
update t2
set Col2e = (select case
when t1.col1b = t2.col1b then Sum(col1b)
when t1.col1c = t2.col1c then Sum(col1c)
else Sum(col1d)
end
from table1 t1)
from table2 t2