2015-01-14 48 views
0

嘿,每個人我有這個SQL查詢,我的問題越來越好,但我仍然不擅長解析數據,使其看起來如何。在SQL中的字符串排序

SELECT r.queueName, COUNT(*) as qty FROM LeaseComplete.dbo.QueueEntries q 
    INNER JOIN LeaseComplete.dbo.Queues r 
     ON r.queueID = q.queueentryQueueID 
    LEFT JOIN LeaseComplete.dbo.QueueActions a 
     ON a.queueactQueueEntryID = q.queueentryID 
     AND a.queueactCreationDate >(CONVERT(datetime, GETDATE()) -1) 
    WHERE q.queueentryAddDate > (CONVERT(datetime, GETDATE()) -1) 
    AND q.queueentryTaskTypeCode = 'Collection' 
    AND q.queueentryStatus != 'Closed' 
    AND r.queueTypeCode = 'Collection' 
    AND r.queueTypeCode = 'Mileage' 
    AND r.queueTypeCode = 'Insurance' 
    AND r.queueName NOT LIKE '%referral%' 
    OR r.queueName LIKE '%Awhite%' 
    OR r.queueName LIKE '%Dsmith%' 
    OR r.queueName LIKE '%Kmartin%' 
    OR r.queueName LIKE '%Mgonzalez%' 
    OR r.queueName LIKE '%Ckponton%' 
    OR r.queueName LIKE '%WTamayo%' 
    OR r.queueName LIKE '%mbare%' 
    OR r.queueName LIKE '%dlittle%' 

    GROUP BY r.queueName 

所以我有什麼是上面的查詢,它應該拉任何數據與第一初始時,queueName山坳的姓氏,如果它包含里程,保險,收藏以及。所以我得到下面的數據集。

+--------------------------------+-----+ 
|   queueName   | qty | 
+--------------------------------+-----+ 
| Collection AWhite Delinquent | 494 | 
| Collection AWhite Followup  | 10 | 
| Collection AWhite Legal  | 9 | 
| Collection CKponton Delinquent | 790 | 
| Collection CKponton Followup | 38 | 
| Collection CKponton Mileage | 2 | 
| Collection DLittle Delinquent | 114 | 
| Collection DLittle Legal  | 28 | 
| Collection DSmith Delinquent | 486 | 
| Collection DSmith Followup  | 21 | 
| Collection DSmith Legal  | 56 | 
| Collection KMartin Delinquent | 97 | 
| Collection KMartin Followup | 3 | 
| Collection MBare Delinquent | 773 | 
| Collection MBare Followup  | 22 | 
| Collection MBare Legal   | 1 | 
| Collection MBare Mileage  | 44 | 
| Collection MGonzalez Delinquen | 739 | 
| Collection MGonzalez Followup | 31 | 
| Collection Referral DSmith  | 107 | 
| Collection WTamayo Delinquent | 682 | 
| Collection WTamayo Followup | 21 | 
| Collection WTamayo Mileage  | 1 | 
| Insurance Collection AWhite | 44 | 
| Insurance Collection CKponton | 59 | 
| Insurance Collection DLittle | 17 | 
| Insurance Collection DSmith | 46 | 
| Insurance Collection KMartin | 2 | 
| Insurance Collection MBare  | 40 | 
| Insurance Collection MGonzalez | 35 | 
| Insurance Collection WTamayo | 50 | 
| Insurance Monitor AWhite  | 2 | 
| Insurance Monitor CKponton  | 2 | 
| Insurance Monitor MBare  | 1 | 
| Insurance Monitor MGonzalez | 3 | 
| Insurance Monitor WTamayo  | 2 | 
+--------------------------------+-----+ 

正如你所看到的,它仍然至少拉一次'引用'列,這不是我想要的東西。我也想弄清楚如何使它不會顯示Insurance Monitor列。如何以適當的方式使這些字符串名稱優先於彼此。對不起,如果我的語法很糟糕,我仍然一天醒來。

+1

無關的,你所得到的結果的方式,你的'WHERE'條件搞砸了:'AND r.queueTypeCode = '收集' AND和r.queueTypeCode ='里程'?,這是不可能的(你可能想用'IN'來考慮)。此外,您稍後在沒有括號的情況下添加「OR」條件(這就是爲什麼您實際得到結果,但它們幾乎肯定不是您想要的結果) – Lamak

回答

3

您所查詢的是烤麪包:你是混合ANDOR條件沒有任何()執行解析/執行ordder,和你有不可能的條件:

AND r.queueTypeCode = 'Collection' 
AND r.queueTypeCode = 'Mileage' 

這是不可能的單字段/值同時具有MULTIPLE個不同的值。你基本上是說「這個領域必須同時是香蕉和潛艇」。

以及:http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html請注意,ANDOR具有更高的優先級。

+0

這實際上是一個非常好的解釋。我得到操作員優先權,至少我不得不說,所以我該如何解決這個問題,這樣我才能使它成爲「香蕉然後是潛艇」 –

+1

如果你想收集/里程數/保險記錄,那麼它必須是一個'OR',它可以簡化爲'r.queueTypeCode IN('Collection','Mileage','Insurance')'。 –

0

我猜你想somethig喜歡

SELECT r.queueName, COUNT(*) as qty FROM LeaseComplete.dbo.QueueEntries q 
    INNER JOIN LeaseComplete.dbo.Queues r 
     ON r.queueID = q.queueentryQueueID 
    LEFT JOIN LeaseComplete.dbo.QueueActions a 
     ON a.queueactQueueEntryID = q.queueentryID 
     AND a.queueactCreationDate >(CONVERT(datetime, GETDATE()) -1) 
    WHERE (q.queueentryAddDate > (CONVERT(datetime, GETDATE()) -1) 
    AND q.queueentryTaskTypeCode = 'Collection' 
    AND q.queueentryStatus != 'Closed' 
    AND r.queueTypeCode IN ('Collection', 'Mileage', 'Insurance') 
    AND r.queueName NOT LIKE '%referral%') 
    AND(r.queueName LIKE '%Awhite%' 
    OR r.queueName LIKE '%Dsmith%' 
    OR r.queueName LIKE '%Kmartin%' 
    OR r.queueName LIKE '%Mgonzalez%' 
    OR r.queueName LIKE '%Ckponton%' 
    OR r.queueName LIKE '%WTamayo%' 
    OR r.queueName LIKE '%mbare%' 
    OR r.queueName LIKE '%dlittle%') 

    GROUP BY r.queueName 
    ORDER BY r.queueName 
+0

這不拉'保險收集隊列'我目前正在試驗解決這個問題 –

+0

你可以改變'或r.queueName LIKE'%dlittle%'''爲 '或r.queueName LIKE'%dlittle% ' 或r.queueName LIKE'%Collection%')' –