大佬教程收集整理的这篇文章主要介绍了如何在 SQL Server 2008 中获得一行的计数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
SELECT
ROW_numbER() OVER (PARTITION BY A.Inq_Inquiry_KID ORDER BY A.Inq_InquiryDatE) AS RN,A.Inq_Inquiry_No,COUNT(d.Inq_ConLengthID)
CASE
WHEN d.Inq_ConLengthID = 113
THEN CONVERT(varchar(10),COUNT(d.Inq_ConLengthID))
ELSE ''
END AS Length20,CASE
WHEN d.Inq_ConLengthID <> 113
THEN CONVERT(varchar(10),COUNT(d.Inq_ConLengthID))
ELSE ''
END AS Length40
FROM
Inquiry.tbl_SE_InquiryEntry A
left JOIN
Inquiry.tbl_SE_ContainerType d ON A.Inq_Inquiry_KID = d.Inq_InquiryID
WHERE
a.Inq_Inquiry_No = 'BOM/CRM/00047'
GROUP BY
A.Inq_Inquiry_No,A.Inq_Inquiry_KID,A.Inq_InquiryDate,d.Inq_ConLengthID
运行这个查询我得到这个结果:
@H_675_2@RN Inq_Inquiry_No Length20 Length40
-------------------------------------------------
1 BOM/CRM/00047 1
2 BOM/CRM/00047 1
但我想要这个结果:
@H_675_2@RN Inq_Inquiry_No Length20 Length40
-------------------------------------------------
1 BOM/CRM/00047 1 1
我使用的是 RN=1 然后我得到了这个不正确的结果:
@H_675_2@RN Inq_Inquiry_No Length20 Length40
-------------------------------------------------
1 BOM/CRM/00047 1
请帮帮我
从分组中删除 Inq_ConLengthId
,并使用条件聚合:
SELECT
ROW_numbER() OVER (PARTITION BY A.Inq_Inquiry_Kid ORDER BY A.Inq_InquiryDatE) AS RN,A.Inq_Inquiry_No,COUNT(d.Inq_ConLengthId)
COUNT(CASE
WHEN d.Inq_ConLengthId = 113
THEN 1 END) AS Length20,COUNT(CASE
WHEN d.Inq_ConLengthId <> 113
THEN 1 END) AS Length40
FROM
Inquiry.tbl_SE_InquiryEntry A
LEFT JOIN
Inquiry.tbl_SE_ContainerType d ON A.Inq_Inquiry_Kid = d.Inq_InquiryId
WHERE
a.Inq_Inquiry_No = 'BOM/CRM/00047'
GROUP BY
A.Inq_Inquiry_No,A.Inq_Inquiry_Kid,A.Inq_InquiryDate
以上是大佬教程为你收集整理的如何在 SQL Server 2008 中获得一行的计数全部内容,希望文章能够帮你解决如何在 SQL Server 2008 中获得一行的计数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。