繁体   English   中英

sql查询以基于文本和组ID返回项目

[英]sql query to return items based on text and group ID

我不确定如何最好地描述我要做什么(或为此搜索),但我将尝试。

我有一个预先存在的查询(存储过程),该查询基于3个特定的ID返回项目。 我想要做的是能够根据结果中具有完全相同的字符串的列进一步减少结果。 我希望查询返回其中某个列具有完全相同值的项目计数。

由于某种原因,我对如何执行此操作感到困惑,因此我对此绘制了一个完整的空白。

这里是当前数据的样本:

PROGRAMID   DAY TIMESLOT         SlotInfoDescription    TITLE
2688         4   13:00-16:30      Free Time              NULL
2688         4   16:30-17:10      NULL                 Joint Session with Search Engines: Machine Learning for Social Media Analytics
2689         4   13:10-16:00      Free Time              NULL
2689         4   16:30-17:10      NULL                   Joint Session with Search Engines: Machine Learning for Social Media Analytics
2300         4   12:00-13:30      Free Time
2300         4   16:30-17:10      NULL                   Joint Session with Search Engines: Machine Learning for Social Media Analytics

这是我想要的结果(基于标题相同):

count = 1

这是当前查询:

    SELECT
    WS.PROGRAMID, 
    WS.ITEMID, 
    WS.DAY, 
    CASE datepart(weekday, dateadd(day, WS.DAY - 1, WE.EVENTSTARTDATE))
        WHEN 1 THEN 'Sun'
        WHEN 2 THEN 'Mon'
        WHEN 3 THEN 'Tue'
        WHEN 4 THEN 'Wed'
        WHEN 5 THEN 'Thu'
        WHEN 6 THEN 'Fri'
        WHEN 7 THEN 'Sat'
        ELSE 'N/A'
    END
    + ' ' + Convert(char(12), dateadd(day, WS.DAY - 1, WE.EVENTSTARTDATE), 101) as Date, 
    WS.TIMESLOT, 
    WS.SLOTTYPE, 
    WSSTC.DESCRIPTION AS SlotTypeDescription, 
    WS.SLOTINFO, 
    WSSIC.DESCRIPTION AS SlotInfoDescription, 
    ISNULL(WSI.TALKID, 0) AS TalkID, 
    LEFT(WPI.FIRSTNAME, 10) + ' ' + LEFT(WPI.LASTNAME, 10) + ' (' + LEFT(WEA.INSTITUTION, 10) + ')' + ' - ' + LEFT(WSI.TITLE, 10) + '...' + RIGHT(WSI.TITLE, 10) AS Talk, 
    WPI.FIRSTNAME, 
    WPI.LASTNAME, 
    WEA.INSTITUTION, 
    WSI.AUTHORLINE, 
    WSI.TITLE, 
    LEFT(WSI.ABSTRACT, 1) AS Abstract, 
    WS.LOCATION, 
    WS.ADDENDUM
FROM 
    DBO.WEBSPEAKERINFO WSI 
    INNER JOIN
        DBO.WEBPERSONALINFO WPI 
        ON 
            WSI.USERID = WPI.USERID 
    INNER JOIN 
        DBO.WEBEVENTAFFILIATION WEA 
        ON 
            WPI.USERID = WEA.USERID 
            AND 
            WEA.EVENTID IN @EVENTID 
    RIGHT OUTER JOIN
        DBO.WEBSCHEDULESLOTTYPECODES WSSTC 
    RIGHT OUTER JOIN
        DBO.WEBSCHEDULES WS 
        ON 
            WSSTC.SLOTTYPE = WS.SLOTTYPE 
        ON 
            WSI.TALKID = WS.TALKID 
    LEFT OUTER JOIN
        DBO.WEBSCHEDULESLOTINFOCODES WSSIC
        ON 
            WS.SLOTINFO = WSSIC.SLOTINFO
    INNER JOIN
        DBO.WEBEVENTS WE
        ON
            WE.EVENTID IN @EVENTID
WHERE
    WS.PROGRAMID IN @EVENTID
    AND
    WS.DAY = @DAY
ORDER BY
    DAY,
    TIMESLOT

假设您正在使用SQL Server。 因为您知道存储的proc返回哪些列,所以可以执行以下操作:

create #tempTable ( columnsSprocReturns )
insert into #tempTable
exec yourSproc

select columns 
from   #tempTable
where  someColumn = 'someValue'

drop table #tempTable

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM