【发布时间】:2015-11-28 13:38:51
【问题描述】:
我正在尝试设计一个 SQL 语句来仅在某些情况下选择值。这是一个示例来说明我的 2 个输入表和预期输出。
表 1:
TransactionID TotalItemsType1 TotalItemsType2
0001 1 8
0002 7 6
1234 5 6
表 2:
TransactionID Cost
0001 5.99
1234 2.25
1234 0.15
0002 9.99
预期结果:
TransactionID Cost TotalItemsType1 TotalItemsType2
0001 5.99 1 8
0002 9.99 7 6
1234 2.25 5 6
1234 0.15 0 0
当 Table2 中有多个行用于单个 TransactionID (1234) 时,输出中的 TotalItemsType1/2 列应仅针对具有最高 Cost 值(2.25 与 0.15)的 TransactionID 填充,否则返回 0。如果多个相等的最高值(例如 2.25 与 2.25 相比),则只需根据数据库行顺序选择一个 TransactionID(第一个)。
我尝试过使用各种连接和大小写表达式来做到这一点,但我还没有找到可行的解决方案。
【问题讨论】:
标签: sql tsql select sql-server-2014 case-when