0

例 CatTerm_id = 613

SELECT
     CatalogTerm_Id
    ,CatalogResolution_Id
    ,Catalogresolution.name
    ,CatalogRegulation.Threshold
    ,OptionItem.name
    ,ApprovalType =
          CASE
               WHEN OptionItem.name LIKE 'Corporate' THEN 1
               WHEN OptionItem.name LIKE 'GEO' THEN 2
               WHEN OptionItem.name LIKE 'Country/Area' THEN 3 ELSE 4
          END
FROM CatalogResolution, CatalogRegulation, OptionItem
WHERE CatalogTerm_Id = 613
     AND CatalogResolution.ID = CatalogResolution_id
     AND OptionItem.ID = CatalogRegulation.Level_Id
     AND type_id IN (645)
     AND CatalogResolution.IsDeleted = 0
     AND CatalogRegulation.IsDeleted = 0
ORDER BY CatalogTerm_Id

出力:

613 1051

Country/Area    3

613 1053

Geo 2

613 1054

     Country/Area   3

出力: 国/地域。

しかし、ディスプレイには GEO が表示され、CatTerm_id を指定せずにリスト全体に拡張できます。

SELECT TOP 1
     CatalogTerm_Id
    ,CatalogResolution_Id
    ,Catalogresolution.name
    ,CatalogRegulation.Threshold
    ,OptionItem.name
    ,ApprovalType =
          CASE
               WHEN OptionItem.name LIKE 'Corporate' THEN 1
               WHEN OptionItem.name LIKE 'GEO' THEN 1
               WHEN OptionItem.name LIKE 'Country/Area' THEN 1 ELSE 4
          END
FROM CatalogResolution, CatalogRegulation, OptionItem
WHERE CatalogTerm_Id = 613
     AND CatalogResolution.ID = CatalogResolution_id
     AND OptionItem.ID = CatalogRegulation.Level_Id
     AND type_id IN (645)
     AND CatalogResolution.IsDeleted = 0
     AND CatalogRegulation.IsDeleted = 0
ORDER BY CatalogTerm_Id

613 1051
国/地域 1

これは私が欲しいものではない 私が欲しいのは「GEO」

4

3 に答える 3

0
Select  Name
FROM ( SELECT catalogterm_id,
OptionItem.Name,
Row_Number () Over (PARTITION By Catalogterm_id 
Order By CatalogTerm_Id, CatalogRegulation.Level_Id DESC )  
        As Approval
           FROM CatalogResolution, CatalogRegulation,  OptionItem 
 WHERE 
CatalogResolution.Id = CatalogResolution_id
AND OptionItem.Id = CatalogRegulation.Level_Id 
And Type_Id In (645)
AND CatalogResolution.IsDeleted = 0 
And CatalogRegulation.IsDeleted = 0 
                                ) Approval
                                                         WHERE Approval = 1                    And catalogterm_id = Cat.id ) 
                   AS [Approval Level]
于 2014-02-25T16:16:12.450 に答える
0

最後に私はそれを割った:)

;WITH  ApprovalLevel ( CatalogTerm_Id, 
CatalogResolution_Id, 
Name, 
ApprovalLevel)
AS
( SELECT CatalogTerm_Id, 
CatalogResolution_Id, 
OptionItem.Name,
RANK () Over (PARTITION By Catalogterm_id
                                Order By CatalogTerm_Id, 
                                         CatalogRegulation.Level_Id DESC )
                                As ApprovalLevel
                                            From CatalogResolution, 
                                                 CatalogRegulation,
                                                 OptionItem
                         where   
                         CatalogResolution.Id = CatalogResolution_id
                         AND OptionItem.Id = CatalogRegulation.Level_Id 
                         And Type_Id In (645)
                         AND CatalogResolution.IsDeleted = 0 
                         And CatalogRegulation.IsDeleted = 0
                                     )
                        (Select CatalogTerm_Id, CatalogResolution_Id, Name 
                        From ApprovalLevel
                        Where ApprovalLevel = 1 )
于 2013-07-25T08:43:37.193 に答える
0

次のように order by 句を追加してから、結果から上位 1 つを選択してみてください

ケースバイケース
「企業」の場合 THEN 1
「GEO」のとき THEN 1
when '国/地域' THEN 1
終わり

于 2013-07-25T08:45:23.687 に答える