Sql 其中a.声明='Y' 并且a.NYKACatID不是空的 和b.LocalPageID=@LocalPageID 和a.SBIcon='N' a.可视='Y' 和a.ProfileTypeID 1 和a.PackageType'G' 和a.PackageT

Sql 其中a.声明='Y' 并且a.NYKACatID不是空的 和b.LocalPageID=@LocalPageID 和a.SBIcon='N' a.可视='Y' 和a.ProfileTypeID 1 和a.PackageType'G' 和a.PackageT,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,其中a.声明='Y' 并且a.NYKACatID不是空的 和b.LocalPageID=@LocalPageID 和a.SBIcon='N' a.可视='Y' 和a.ProfileTypeID 1 和a.PackageType'G' 和a.PackageType“P” 和a.PackageType“C” ) 按登录状态订购 顺便说一下,我假设您的原始查询并不总是包括登录用户,您希望在第二个联合查询中指定这些用户。顺便说一下,我假设您的原始查询不总是包括登录用户,您可能希望在第二个联合查询中指定它

其中a.声明='Y' 并且a.NYKACatID不是空的 和b.LocalPageID=@LocalPageID 和a.SBIcon='N' a.可视='Y' 和a.ProfileTypeID 1 和a.PackageType'G' 和a.PackageType“P” 和a.PackageType“C” ) 按登录状态订购
顺便说一下,我假设您的原始查询并不总是包括登录用户,您希望在第二个联合查询中指定这些用户。顺便说一下,我假设您的原始查询不总是包括登录用户,您可能希望在第二个联合查询中指定它们。我认为这可能是一种更优雅的方式,可以完成与我回答的相同的事情(您首先回答,尽管我在写我的问题之后才看到)+为你准备的。工作得很好。。很简单,就像我喜欢我的代码一样。非常感谢你的帮助……我想这可能是一种更优雅的方式,可以做我回答的事情(你先回答,尽管我写了我的答案后才看到)+为你准备的。工作得很好。。很简单,就像我喜欢我的代码一样。非常感谢你的帮助。。
SELECT TOP 15
a.MemberID,             -- 0
a.UserName,             -- 1
a.MemberDisplayName,    -- 2
a.NYKABizName           -- 3
FROM Member a
INNER JOIN AdDisplay b ON b.MemberID = a.MemberID
WHERE a.Claimed = 'Y'
AND a.NYKACatID IS NOT NULL
AND b.LocalPageID = @LocalPageID
AND a.SBIcon = 'N'
AND a.Viewable = 'Y'
AND a.ProfileTypeID <> 1
AND a.PackageType <> 'G'
AND a.PackageType <> 'P'
AND a.PackageType <> 'C'
ORDER BY PackageType ASC
order by (case when MemberId = 102 then 0 else 1 end),
         PackageType ASC
SELECT TOP 15
a.MemberID,             -- 0
a.UserName,             -- 1
a.MemberDisplayName,    -- 2
a.NYKABizName           -- 3
FROM Member a
INNER JOIN AdDisplay b ON b.MemberID = a.MemberID
LEFT OUTER JOIN LoggedInUsers l ON a.MemberID = l.MemberID
WHERE (a.Claimed = 'Y'
AND a.NYKACatID IS NOT NULL
AND b.LocalPageID = @LocalPageID
AND a.SBIcon = 'N'
AND a.Viewable = 'Y'
AND a.ProfileTypeID <> 1
AND a.PackageType <> 'G'
AND a.PackageType <> 'P'
AND a.PackageType <> 'C')
OR l.MemberID IS NOT NULL
ORDER BY IF(l.MemberID IS NOT NULL,0,1), PackageType ASC
SELECT TOP 15 * FROM (
    SELECT
      0 as loginStatus,
      a.MemberID,             -- 0 
      a.UserName,             -- 1 
      a.MemberDisplayName,    -- 2 
      a.NYKABizName           -- 3 
    FROM Member a 
    INNER JOIN AdDisplay b 
    ON b.MemberID = a.MemberID 
    WHERE a.Claimed = 'Y' 
    AND a.NYKACatID IS NOT NULL 
    AND b.LocalPageID = @LocalPageID 
    AND a.SBIcon = 'N' 
    AND a.Viewable = 'Y' 
    AND a.ProfileTypeID <> 1 
    AND a.PackageType <> 'G' 
    AND a.PackageType <> 'P' 
    AND a.PackageType <> 'C' 
    AND a.MemberID IN (@memberIdList)

    UNION

    SELECT
      1 as loginStatus,
      a.MemberID,             -- 0 
      a.UserName,             -- 1 
      a.MemberDisplayName,    -- 2 
      a.NYKABizName           -- 3 
    FROM Member a 
    INNER JOIN AdDisplay b 
    ON b.MemberID = a.MemberID 
    WHERE a.Claimed = 'Y' 
    AND a.NYKACatID IS NOT NULL 
    AND b.LocalPageID = @LocalPageID 
    AND a.SBIcon = 'N' 
    AND a.Viewable = 'Y' 
    AND a.ProfileTypeID <> 1 
    AND a.PackageType <> 'G' 
    AND a.PackageType <> 'P' 
    AND a.PackageType <> 'C'
)
ORDER BY loginStatus