-1

我需要帮助弄清楚为什么我没有得到这个查询的任何结果。

我的老板已经提取了数据,所以我知道它在那里。但由于某种原因,我没有得到任何东西:

SELECT SessionSID as 'ResponseID'
    , TargetID
    , TargetName
    , SurveyNumber
    , ABCSurveyName
    , SurveyID as 'RedirectedSurveyID'
    , SupplierID
    , SupplierName
    , RespondentID
    , PID
    , IPAddress
    , IsLive
    , EntryDate
    , LastDate
    , LK_ResponseStatusID as 'Response Status Code'
    , ClientLK_ResponseStatusID as 'Client Response Status Code'
    , LK_SupplierLinkTypeName
    , ProjectID
    , ParentSID 
    , TargetCPI
    , SupplierCPI
    , DefaultCPI 
FROM BI_Sessions (nolock) 
WHERE EntryDate BETWEEN   '06-07-2012'  AND '06-08-2012'  
    AND ABCSurveyName  like  'EBAY4263-718184%' 
    AND SupplierID =  42 

更新数据在这里(我知道我很抱歉,它很长):

ResponseID  TargetID    TargetName  SurveyNumber    ABCSurveyName   RedirectedSurveyID  SupplierID  SupplierName    RespondentID    PID IPAddress   IsLive  EntryDate   LastDate    Response Status Code    Client Response Status Code LK_SupplierLinkTypeName ProjectID   ParentSID   TargetCPI   SupplierCPI DefaultCPI
6dd94974-9e1b-44ce-8a3e-e1680f921a2e    -1  NULL    13958   Tracking NO_Kund_Cint4005   12963   42  EBAY    31962330    08a945eb-d780-4baa-892a-d4132e59afb5    80.213.119.232  1   2012-06-07 00:01:51.420 2012-06-07 00:02:05.327 3   1   Targeted / Reuse Supplier-Account Only  4637    c847ad2f-9a9f-4a81-8da3-a74d49f8143e    3   10  10
c2d53463-f81b-4156-87a7-e70203a4fc0e    -1  NULL    12200   Tracking NO_Kund_Cint4002   11205   42  EBAY    2513971 0e9d0e01-9009-40a8-a42e-65e1e6d4b1f8    85.167.23.63    1   2012-06-07 00:03:38.220 2012-06-07 00:03:55.143 3   38  Targeted / Reuse Supplier-Account Only  3857    4f74bbaf-0bb3-4430-9529-72c5dff36d3a    3   10  10

编辑:你如何使用索引来加速查询?

更新:更多:

SessionID   int no  4   10  0   no  (n/a)   (n/a)   NULL
SessionSID  nvarchar    no  128                 yes (n/a)   (n/a)   SQL_Latin1_General_CP1_CI_AS
AccountID   int no  4   10  0   yes (n/a)   (n/a)   NULL
RespondentID    int no  4   10  0   yes (n/a)   (n/a)   NULL
SurveyID    int no  4   10  0   yes (n/a)   (n/a)   NULL
SurveyNumber    int no  4   10  0   yes (n/a)   (n/a)   NULL
ABCSurveyName   nvarchar    no  256                 yes (n/a)   (n/a)   SQL_Latin1_General_CP1_CI_AS
SupplierID  int no  4   10  0   yes (n/a)   (n/a)   NULL
SupplierName    nvarchar    no  128                 yes (n/a)   (n/a)   SQL_Latin1_General_CP1_CI_AS
TargetID    int no  4   10  0   yes (n/a)   (n/a)   NULL
TargetCPI   float   no  8   53  NULL    yes (n/a)   (n/a)   NULL
ClientCPI   float   no  8   53  NULL    yes (n/a)   (n/a)   NULL
QuotaCPI    float   no  8   53  NULL    yes (n/a)   (n/a)   NULL
SupplierCPI float   no  8   53  NULL    yes (n/a)   (n/a)   NULL
DefaultCPI  float   no  8   53  NULL    yes (n/a)   (n/a)   NULL
EntryDate   datetime    no  8                   yes (n/a)   (n/a)   NULL
LastDate    datetime    no  8                   yes (n/a)   (n/a)   NULL
LK_RespondentPathID int no  4   10  0   yes (n/a)   (n/a)   NULL
LK_ResponseStatusID int no  4   10  0   yes (n/a)   (n/a)   NULL
IsLive  bit no  1                   yes (n/a)   (n/a)   NULL
PID nvarchar    no  256                 yes (n/a)   (n/a)   SQL_Latin1_General_CP1_CI_AS
IPAddress   nvarchar    no  32                  yes (n/a)   (n/a)   SQL_Latin1_General_CP1_CI_AS
ClientLK_ResponseStatusID   int no  4   10  0   yes (n/a)   (n/a)   NULL
ParentSID   nvarchar    no  128                 yes (n/a)   (n/a)   SQL_Latin1_General_CP1_CI_AS
SurveyQualificationID   int no  4   10  0   yes (n/a)   (n/a)   NULL
TargetName  nvarchar    no  128                 yes (n/a)   (n/a)   SQL_Latin1_General_CP1_CI_AS
SupplierLinkID  int no  4   10  0   yes (n/a)   (n/a)   NULL
LK_SupplierLinkTypeID   int no  4   10  0   yes (n/a)   (n/a)   NULL
LK_SupplierLinkTypeName nvarchar    no  128                 yes (n/a)   (n/a)   SQL_Latin1_General_CP1_CI_AS
EntryType   int no  4   10  0   yes (n/a)   (n/a)   NULL
ExitType    int no  4   10  0   yes (n/a)   (n/a)   NULL
ProjectID   int no  4   10  0   yes (n/a)   (n/a)   NULL
ProjectName nvarchar    no  128                 yes (n/a)   (n/a)   SQL_Latin1_General_CP1_CI_AS
CreateUserID    int no  4   10  0   yes (n/a)   (n/a)   NULL
CreateDate  datetime    no  8                   yes (n/a)   (n/a)   NULL
UpdateUserID    int no  4   10  0   yes (n/a)   (n/a)   NULL
UpdateDate  datetime    no  8                   yes (n/a)   (n/a)   NULL
LK_RecordStatusID   bit no  1                   yes (n/a)   (n/a)   NULL
LK_CountryLanguageID    int no  4   10  0   yes (n/a)   (n/a)   NULL
LK_CountryLanguageName  nvarchar    no  128                 yes (n/a)   (n/a)   SQL_Latin1_General_CP1_CI_AS
SurveyAccountName   nvarchar    no  128                 yes (n/a)   (n/a)   SQL_Latin1_General_CP1_CI_AS
SurveyAccountID int no  4   10  0   yes (n/a)   (n/a)   NULL

编辑:我需要老板的帮助,现在一切都解决了。还有另一个有用的表可以从中提取 ID,因此使用索引很有帮助。

在 MSSQL Server 管理工作室中,我只是运行了一个这样的查询来获取该 ID #:

select * from Surveys (nolock) where ABCSurveyName = '718184 Multicultural Shop '
4

3 回答 3

2

感谢您发布您的数据 - 您的年份错误:

询问:

WHERE EntryDate BETWEEN   '06-07-2011 00:00:01'  AND '06-07-2011 10:00:01' 

样本数据:

2012-06-07 00:01:51.420 2012-06-07 00:02:05.327 3 
2012-06-07 00:03:38.220 2012-06-07 00:03:55.143 3 

哎呀;)

我猜这可能是整个问题。请让我们知道更改查询的年份是否有效!

于 2012-06-19T21:56:53.513 回答
2

假设您在没有 where 子句的情况下获得结果,问题就在那里。我现在不知道在哪里没有数据可以查看。但在类似情况下,最佳做法是逐一评论您的过滤器并检查结果。无论如何,我的感觉是问题出在日期范围内。尝试:

WHERE EntryDate BETWEEN   '2011-06-07 00:00:01'  AND '2011-06-07 10:00:01'

或者

WHERE EntryDate BETWEEN   '2011-07-06 00:00:01'  AND '2011-07-06 10:00:01'

因为你知道 06 和 07 代表什么(dd-MM-yyyy 或 MM-dd-yyyy)。

(不太可能)如果这是大约 13 天前,请将年份更改为 2012 年(??? 按小时检查一些 - 相当 - 最近的东西是有意义的)。

于 2012-06-19T20:25:04.393 回答
1

查看您的输入日期格式(在您的示例数据中)。一个是 31:52.4 42:26.6。或者 31:52.4 而 LastDate 是 42:26.6(目测)。日期似乎有问题。出现输入日期的数据是“31:52.4”

这些数据是从哪里来的?

您是在没有 where 子句的情况下运行查询还是提供给您的?

最重要的是,它在表中的数据类型是什么?

*编辑 - 添加 * 感谢您修复数据 - 如果您希望通过查询返回示例数据,则日期范围内的年份错误。

WHERE EntryDate BETWEEN   '06-07-2012 00:00:01'  AND '06-07-2012 10:00:01'

此外,您的查询和数据之间的日期格式不同,它仍然会返回并且不是实际问题,但可能更容易发现您的错误。

此查询也不会根据调查名称条件返回样本数据。ABCSurvey 列名称在之前的数据中,我不再看到。我现在看到 FEDSUrveyname,所以我不确定要谈论哪个 - 但是在您的编辑“718184”被列为名为 ABCSurveyName 的字段中的数据之前,就像在单独的字段中列出的“EBAY”一样。数据没有将这两个放在一个字段中,但您的查询条件显示 - ABCSurveyName like 'EBAY4263-718184%'

我不确定实际的表结构是什么。我猜这个条件应该被打破。ABCSurveyName LIKE '%718184%' SuplierId 似乎是 42,所以我认为您不需要包含 EBAY 部分。

我的猜测是您需要将WHERECLause 更改为

WHERE EntryDate BETWEEN   '06-07-2012 00:00:01'  AND '06-07-2012 10:00:01' --but i reccomend 'YYYY-MM-DD ...'  format for consistency
AND ABCSurveyName  like  '%718184%' --this is may even be ABCSurveyName = 718184 
AND SupplierID =  42

同样,我关于 42 是 EBAY 的假设可能是错误的,因为我没有看到结构,所以您可能需要添加 SupplierName = 'EBAY'。

因此,如果这不起作用,为了帮助您进一步了解,我需要查看表结构,因为我在这里做了很多推论。样本数据是来自数据库,还是从文件中复制?如果来自文件,则从数据库表中发布实际数据。让我知道它是否有效。:)

*从OP的新信息中编辑添加

看起来您可能缺少另一张桌子。示例数据具有未包含在架构中的“ResponseID”。我觉得你需要加入。

请回答这些问题:样本数据是什么?它从哪里来的?您希望从查询中返回此数据吗?谢谢

并尝试这样做:(从子句中删除调查名称部分,查看结果,看看是否需要进一步缩小)

WHERE EntryDate BETWEEN   '06-07-2012'  AND '06-08-2012'  
    --AND ABCSurveyName  like  'EBAY4263-718184%' 
    AND SupplierID =  42
于 2012-06-19T20:56:43.583 回答