SQL查询计算对不同列进行分组的总行数

时间:2016-03-04 01:46:33

标签: sql sql-server

我有一个拥有RMA返回数据的数据库。我想编写一个查询来返回一个单元被返回的总次数(每个返回都有一个唯一的RMA编号)。我还需要返回一个单元多次返回的次数,以及它返回相同症状的次数。每次设备进入工作站时都会创建一条记录(为每个工作站记录传播RMA,症状和返回的日期)。

数据如下所示:

Total_Returns   Repeat_Return   Same_Symptom_Return
6               2               1

我的输出需要如下所示:

Select count(*) as totalcount
From
(
     SELECT     
        [SN]
       ,[RMA]
     FROM [dbo].[test]
     Group by [SN],[RMA]
)as a

A001(RMA 84704)是单次退货。

A002是多次返回 - (RMA 83494)是第一次返回(修复后,该单位被运出)在一段时间后在现场,该单位再次返回A002(RMA 84283)....返回单位,它通过3个站(我们为每个站创建一个记录(传播每个站记录返回的RMA,症状和日期)。

我可以使用代码获得Total_Returns:

<body>
    <header>
        <a href="index.html" id="logo"> <h1>
        <div id="header_title">
            Title
        </div></h1> </a>
        <div id="header_border"></div>
        <nav id="nav">
            <ul>
                <li>
                    <a href="index.html" class="selected" >About</a>
                </li>
                <li>
                    <a href="resume.html">Resume</a>
                </li>
                <li class="subNav">
                    <a>Portfolio</a>
                    <ul>
                        <li>
                            <a href="writing_samples.html">Writing Samples</a>
                        </li>
                        <li>
                            <a href="photoshop.html">Photoshop</a>
                        </li>
                    </ul>
                </li>
                <li>
                    <a href="contact.html">Contact</a>
                </li>
            </ul>
        </nav>
    </header>
    <object id="resume" data="img/Resume.pdf" type="application/pdf" style="float: left" width="100%" height="100%">

        <p>
            It appears you don't have a PDF plugin for this browser.
            No biggie... you can <a href="myfile.pdf">click here to
            download the PDF file.</a>
        </p>

    </object>

</body>

2 个答案:

答案 0 :(得分:0)

达到计数需要3种完全不同的方法,所以我使用了3个独立的子查询。在这里看到这个工作在sqlfiddle(但不是在MS SQL Server上):http://sqlfiddle.com/#!5/9df16/1

结果:

| Total_Count | Repeat_Return | Same_Symptom_Return |
|-------------|---------------|---------------------|
|           6 |             2 |                   1 |

查询:

select
    (select count(distinct SN + RMA + SYMPTOM) from table1) as Total_Count
,   (select count(*) from(
         SELECT  SN
         FROM table1
         Group by SN
         having count(distinct Date_Returned) > 1)
     ) as Repeat_Return
,   (select count(*) from(
         SELECT  SYMPTOM  
         FROM table1
         Group by SYMPTOM  
         having count(*)/3 > 1)
     ) as Same_Symptom_Return

注意:你应该包含&#34; sql server&#34;作为你问题的标签(我认为这是因为 [dbo]。[测试]

答案 1 :(得分:0)

我让它发挥作用......我确信有一种更简洁的方式来编写它......

|Total_Returned | Repeat_Return | Same_Symptom_Return |
|---------------|---------------|---------------------|
|             6 |             2 |                   1 |

结果:

VALUE