-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 Management Studioで、次のようなクエリを実行してID番号を取得しました。

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

3 に答える 3

2

where句なしで結果が得られると仮定すると、問題はまさにそこにあります。私は今、正確に表示するデータがない場所にいません。ただし、同様の場合のベストプラクティスは、フィルターを1つずつコメントして、結果を確認することです。とにかく、問題は日付範囲にあると思います。試してみてください:

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 に答える
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 に答える
1

(サンプルデータの)エントリの日付形式を確認します。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」は、別のフィールドにリストされた「EBAY」と同様に、ABCSurveyNameという名前のフィールドにデータとしてリストされていました。データの1つのフィールドにこれら2つが含まれている場所はありませんが、クエリ条件は次のようになります-ABCSurveyName like'EBAY4263-718184%'

実際のテーブル構造が何であるかわかりません。状態を崩すべきだと思います。ABCSurveyName LIKE'%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
于 2012-06-19T20:56:43.583 に答える