关于asp.net应用程序的SQL查询

时间:2017-01-08 17:16:23

标签: sql asp.net

我是SQL和ASP.NET的新手。对于我的一个项目,我需要以下输出requried output。到目前为止,我已经完成了这项工作my current output。但这里有一些测试类型名称正在重复。如何解决这个问题呢?

我当前的查询:

SELECT 
    tyi.TestType, 
    COUNT(tr.TestID) AS NoOfTest,
    (Fee*COUNT(tr.TestID)) AS TotalAmount,
FROM
    TestTypeInfo AS tyi 
        LEFT OUTER JOIN TestInfo AS ti ON
             tyi.TestTypeId=ti.TestTypeId
        LEFT OUTER JOIN TestRequest tr ON
             ti.TestId=tr.TestId
WHERE
    EntryDate BETWEEN '2016-12-31' AND '2016-12-31' OR
    EntryDate IS NULL
GROUP BY
    tyi.TestType

这给了我输出:

TestType      | NoOfTest | TotalAmount
---------------------------------------
ECG           | 4        | 600
X-Ray         | 4        | 800
Blood         | 6        | 1800
X-Ray         | 4        | 1200
Echo          | 4        | 4000
X-Ray         | 3        | 3300
Echo          | 0        | 0
UltraSonogram | 0        | 0

3 个答案:

答案 0 :(得分:1)

您为每个TestType获得多个帖子的原因是因为您在分组中使用费用。这导致如果任何一行中的费用不同,则会导致该行作为单独的结果行发布。

如果我理解正确(很难说没有查看原始数据)你想要显示Xray的测试数量和所有这些测试的费用。

不会满足吗?

{{1}}

这当然取决于应如何计算TotalAmount。

答案 1 :(得分:0)

您可以从主查询中删除费用列。然后使用相关子查询来计算总金额以及费用ID的加入。

答案 2 :(得分:0)

这样的事情可以帮助你。请检查一次列名称。

Select a.TestType , Sum(a.NoOfTest) , Sum(a.TotalAmount) from 
(Select tyi.TestType As TestType , Count(tr.testId) As NoOfTest, 
(Fee*Count(tr.testId)) As TotalAmount 
From TestTypeInfo As tyi 
Left Outer Join TestInfo As ti on tyi.TestTypeId = ti.TestTypeId 
Left Outer Join TestRequest tr on ti.TestId = tr.TestId 
Where EntryDate between '2016-12-31' and '2016-12-31' 
or EntryDate is null group by tyi.TestType, Fee) a 
Group by a.TestType