如何在SQL中编写查询以显示列的最大数量 [英] How to write a query in SQL to display max number of column's

查看:74
本文介绍了如何在SQL中编写查询以显示列的最大数量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个表,如DataHeader和DataDetail

i想要显示DataDetail表中的备注,它们具有高DDid

,如果DataDetail中没有备注,那么我想要显示来自DataHeader表的备注



如何用SQL编写查询



DataHeader

DHid A BC备注

1 abc 123 xyz DHidR1

2 bcd 252 jhyvb DHidR2

3 efg 541 sdh DHidR3



DataDetail

DHid DDid备注

1 1工作

1 2工作

1 3工作

2 1备注1

2 2备注2

2 3备注3

2 4备注4

2 5备注5



i希望显示数据如

DHid A B C备注
1 abc 123 xyz工作

2 bcd 252 jhyvb备注5

3 efg 541 sdh DHidR3







Sry I Cant写表格式



我尝试了什么:



i试了试外连接到Dataheader,我只显示数据头注释

I have two tables like DataHeader and DataDetail
i want to display the Remarks from DataDetail table which are having high DDid
and if remarks not available in DataDetail then I want to display Remarks from DataHeader Table

how to write query in SQL

DataHeader
DHid A B C Remarks
1 abc 123 xyz DHidR1
2 bcd 252 jhyvb DHidR2
3 efg 541 sdh DHidR3

DataDetail
DHid DDid Remarks
1 1 working
1 2 working
1 3 worked
2 1 Remarks1
2 2 Remarks2
2 3 Remarks3
2 4 Remarks4
2 5 Remarks5

i want to display the data like
DHid A B C Remarks
1 abc 123 xyz worked
2 bcd 252 jhyvb Remarks5
3 efg 541 sdh DHidR3



Sry I Cant write tables format

What I have tried:

i have tried left outer join to Dataheader and i displaying dataheader remarks only

推荐答案

这样的东西:

Something like this:
SELECT
    DH.DHid,
    DH.A,
    DH.B,
    DH.C,
    IsNull(
        (
            SELECT TOP 1 DD.Remarks
            FROM DataDetail As DD
            WHERE DD.DHid = DH.DHid
            And DD.Remarks Is Not Null
            ORDER BY DD.DDid DESC
        ),
        DH.Remarks
    ) As Remarks
FROM
    DataHeader As DH
;



或:


Or:

WITH cteDetail As
(
    SELECT
        ROW_NUMBER() OVER (PARTITION BY DHid ORDER BY DDid DESC) As RN,
        DHid,
        Remarks
    FROM
        DataDetail
    WHERE
        Remarks Is Not Null
)
SELECT
    DH.DHid,
    DH.A,
    DH.B,
    DH.C,
    IsNull(DD.Remarks, DH.Remarks) As Remarks
FROM
    DataHeader As DH
    LEFT JOIN cteDetail As DD
    ON DD.DHid = DH.DHid
    And DD.RN = 1
;


这篇关于如何在SQL中编写查询以显示列的最大数量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆