【发布时间】:2016-12-12 18:56:23
【问题描述】:
我有一个查询,它返回我需要的值,但查询中的列不是实际的数据库列或任何表的列。它们就是我根据条件在 Query 中命名它们的原因。现在我想在数据网格中显示它并将它们从我的 .NET Web 应用程序导出到 Excel。我确信我可以创建一个视图,但是当我尝试访问该列时是否会出现问题,因为它们不是表的实际列名?
或者我应该使用存储过程吗?我不确定哪个更容易维护。
下面是我的查询。
SELECT
c.AttributeValue as ProjectName
,COUNT(DISTINCT CASE WHEN s.AttributeValue = 'Active' THEN c.REQUESTID END) as Active
,COUNT(DISTINCT CASE WHEN s.AttributeValue = 'Awaiting IPN' THEN c.REQUESTID END) as AwaitingIPN
,COUNT(DISTINCT CASE WHEN s.AttributeValue = 'Awaiting LPID' THEN c.REQUESTID END) as AwaitingLPID
,COUNT(DISTINCT CASE WHEN s.AttributeValue = 'DE review Completed' THEN c.REQUESTID END) as DEReviewCompleted
,COUNT(DISTINCT CASE WHEN s.AttributeValue = 'Info complete' THEN c.REQUESTID END) as InfoComplete
,COUNT(DISTINCT CASE WHEN s.AttributeValue = 'IPN added' THEN c.REQUESTID END) as IPNAdded
,COUNT(DISTINCT CASE WHEN s.AttributeValue = 'New' THEN c.REQUESTID END) as New
,COUNT(DISTINCT CASE WHEN s.AttributeValue = 'Pending DE review' THEN c.REQUESTID END) as PendingDEReview
,COUNT(DISTINCT CASE WHEN s.AttributeValue = 'Pending Info' THEN c.REQUESTID END) as PendingInfo
,COUNT(DISTINCT CASE WHEN s.AttributeValue = 'Pending Validation' THEN c.REQUESTID END) as PendingValidation
,COUNT(DISTINCT CASE WHEN s.AttributeValue = 'Validation Completed' THEN c.REQUESTID END) as ValidationCompleted
,COUNT(DISTINCT CASE WHEN s.AttributeValue in('Active','Validation Completed','Awaiting IPN','Awaiting LPID','DE review Completed',
'Info complete','IPN added','New','Pending DE review','Pending Info','Pending Validation') THEN c.REQUESTID END) as TotalRequestsPendingICLUpload
FROM
Request t
LEFT JOIN RequestAttributes c
ON t.RequestID = c.RequestID
AND c.AttributeID = 8218
LEFT JOIN RequestAttributes s
ON t.RequestID = s.RequestID
AND s.AttributeID = 8265
WHERE c.AttributeValue IS NOT NULL and c.AttributeValue <> '' AND t.ClosedDate IS NULL
GROUP BY
c.AttributeValue
【问题讨论】:
-
您正在分配列别名,这是您将在查询中使用的。即
select AwaitingIPN from myView除非您要传递不同的请求和属性 ID,否则我不明白您为什么要在此处查看视图。 -
是的,这就是我在数据库中创建视图的原因,但我想确认这是否是正确的方法。那么在我的术语模型中,我可以直接查询我的 view.awaitingipn 来获取数据表中的字段吗?
-
是的,您将使用您在视图中提供的列的名称。
标签: c# sql-server excel