sql - 每个 ID 仅选择一个值 - SQL Server
问题描述
我不知道这是否可能,我什至不知道如何谷歌它。
我正在使用 SQL Server 2014。
现在我有一个 SP,它输出一个包含 MovementID、Vehicle、VehicleType 和 Total of sales 数据的表。但它将所有车辆 ID 和车辆类型汇总在一起。
我需要分开车辆,我可以。问题是总数出现重复或重复等。
那么,我怎样才能每个 ID 只选择一次该列(在示例中为 MovementID)。
当然,我会继续尝试,但任何想法都会受到赞赏。
[
解决方案
您可以通过 MovementID 对记录进行分区,然后为分区中的每一行生成一个ROW_NUMBER。然后,您可以使用IIF仅在行号为 1 时显示总计,即该行是分区中的第一行。它应该看起来像这样:
SELECT MovementID, VehicleID, VehicleType, IIF(rowno = 1, Total, NULL)
FROM
(
SELECT MovementID, VehicleID, VehicleType, Total,
ROW_NUMBER() OVER (PARTITION BY MovementID ORDER BY MovementID) AS rowno
FROM <WHAT_I_HAVE_NOW>
) tmp
推荐阅读
- html - 如何在只使用一个标签的情况下使用CSS实现带边框的文字效果?
- c++ - 类/结构内的递归 noexcept 规范
- rollupjs - 为什么 SvelteKit 基本示例构建输出使用非常现代的 import 关键字?
- r - 在 ggplot2 的意大利面条图中添加黄土回归线、中位数 (IQR) 或平均值 (SD)
- go - error = rpc error: code = Internal desc = HEADERS 帧不能出现在流的中间
- java - 在 Java 中解析人类可读的间隔
- elasticsearch - 如何管理与 Elasticsearch 的高级客户端连接
- php - 如何在 Tidy PHP 中禁用有关 URL 中变量的警告
- ruby-on-rails - 当我使用设计助手 current_user 时出现参数错误
- formik - 为什么 yup 验证在匹配特定值时不起作用?