
楼主菜鸟一枚,没有SQL基础,网上查了些资料,现在只写出如下存储过程,得到的结果是不同版本的B12会全部包含在结果中。本来想加group by来筛选,奈何水平有限,尝试许久,捣鼓不出来,求各位大侠指教!!不胜感激!
ALTER PROCEDURE [dbo].[GetInfo]
@Guid uniqueidentifier
AS
BEGIN
SET NOCOUNT ON;
SELECT a.*, c.*
from (select *from Table_B b where b.pGUID = @Guid)
as c inner join Table_A a
on c.sGUID = a.GUID
order by c.件号 asc
END
------解决思路----------------------
ALTER PROCEDURE [dbo].[GetInfo]
@Guid uniqueidentifier
AS
BEGIN
SET NOCOUNT ON;
SELECT T4.pGuid,T4.sGUID,T3.代号,T3.其他列,T4.其他列
FROM(
SELECT T1.pGuid,T2.代号,MAX(T2.版本)版本
FROM Table_B T1
JOIN Table_A T2 ON T1.sGUID=T2.GUID
WHERE T1.pGuid=@Guid
GROUP BY T1.pGuid,T2.代号
)T JOIN Table_A T3 ON T.代号=T3.代号 AND T.版本=T3.版本
JOIN Table_B T4 ON T3.GUID=T4.sGUID
END
------解决思路----------------------
ALTER PROCEDURE [dbo].[GetInfo]
@Guid uniqueidentifier
AS
BEGIN
SET NOCOUNT ON;
SELECT pguid,sguid,代号
FROM
(
SELECT b.pguid,b.sguid,a.代号,ROW_NUMBER() OVER(PARTITION BY a.代号 ORDER BY a.版本 DESC) re
FROM Table_A a
JOIN Table_B b ON a.guid=b.sguid
WHERE b.pguid=@Guid
) a
WHERE re=1
END
------解决思路----------------------
SELECT sGUID,pGUID,代号,版本,a其他列,件号,b其他列
FROM (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY a.代号 ORDER BY a.版本 DESC) rn
FROM Table_a a
JOIN Table_b b
ON a.GUID = b.sGUID
) t
WHERE rn = 1
ORDER BY 件号