sql - 如何通过从多个行项目之一中获取值来创建标题记录?
问题描述
我有一组已排序的行项目。它们首先按以下顺序ID
排序Date
:
| ID | DESCRIPTION | Date |
| --- | ----------- |----------|
| 100 | Red |2019-01-01|
| 101 | White |2019-01-01|
| 101 | White_v2 |2019-02-01|
| 102 | Red_Trim |2019-01-15|
| 102 | White |2019-01-16|
| 102 | Blue |2019-01-20|
| 103 | Red_v3 |2019-01-14|
| 103 | Red_v3 |2019-03-14|
我需要在代表项目标题的 SQL Server 表中插入行,以便每个 ID 的第一行提供目标表中的Description
and Date
。每个 ID 在目标表中应该只有一行。
例如,上面的源表会在目的地产生这个结果:
| ID | DESCRIPTION | Date |
| --- | ----------- |----------|
| 100 | Red |2019-01-01|
| 101 | White |2019-01-01|
| 102 | Red_Trim |2019-01-15|
| 103 | Red_v3 |2019-01-14|
如何折叠源,以便我只ID
从源中获取每个源的第一行?
我更喜欢在 SSIS 中进行转换,但如有必要可以使用 SQL。实际上,这两种方法的解决方案都是最有帮助的。
这个问题与Trouble using ROW_NUMBER() OVER (PARTITION BY ...) 不同,因为它试图确定一种方法。该问题的提问者采用了一种方法,其中的答案不止一种。这个问题是关于如何使这种特定方法发挥作用。
解决方案
相关的子查询将在这里有所帮助:
SELECT *
FROM yourtable t1
WHERE [Date] = (SELECT min([Date]) FROM yourtable WHERE id = t1.id)
推荐阅读
- swift - Xcode SwiftUI Preview 崩溃,模拟器和设备工作正常
- python - pandas find all exact 4 consecutive digits from string
- postgresql - DBeaver 未编译使用 psql 客户端编译的函数
- webdriver-io - 无法从 circlci 执行 webdriver.io 脚本
- c++ - 结合范围适配器和 std::source_location 得到奇怪的结果
- android-studio - 当我开始使用 xml 时,我找不到简单文本视图的所有属性,例如文本颜色等
- java - 弹簧状态机 | 删除临时文件
- php - Laravel Livewire 从视图中传递多个参数
- r - 如何从 R 中的内联按钮(电报机器人)获取回调
- angular - Angular 6+ 解析器不加载视频网址