我需要帮助弄清楚为什么我没有通过此查询获得任何结果。
我的老板已经提取了数据,所以我知道它就在那里。但出于某种原因,我没有得到任何东西:
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 '
答案 0 :(得分: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年(这是有意义的,以小时为单位检查 - 最近的事情)。
答案 1 :(得分:2)
用于发布数据的Thanx - 你错误的一年:
QUERY:
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
哎呀;)
我猜这可能是整个问题。如果在查询中更改年份,请告诉我们!
答案 2 :(得分: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'
此外,您的日期在查询和数据之间采用不同的格式,它仍然会返回并且不是实际问题,但可能会更容易发现您的错误。
此查询也不会根据surveyname条件返回样本数据。 ABCSurvey列名在之前的数据中,我不再看到了。我现在看到FEDSUrveyname,所以我不确定要谈论哪一个 - 但是在你的编辑'718184'被列为名为ABCSurveyName的字段中的数据之前,就像在单独的字段中列出的'EBAY'一样。数据在一个字段中没有一起存在,但您的查询条件是 - ABCSurveyName如'EBAY4263-718184%'
我不确定实际的表结构是什么。我猜测应该打破这种情况。 ABCSurveyName喜欢'%718184%' SuplierId似乎是42,所以我认为你不需要包括EBAY部分。
我猜您需要将WHERE
CLause更改为
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