2009-08-18 4 views
4
SELECT * FROM VNTREAT WHERE VN = SOME ('482') 

Msg 102, niveau 15, état 1, ligne 1 syntaxe incorrecte près de '482'.Quelqu'un dans T-SQL: comment l'utiliser?

+0

qu'est-ce QU'UNE? est-ce une fonction définie par l'utilisateur? – shahkalpesh

+0

non, sa partie de tsql http://msdn.microsoft.com/en-us/library/ms175064(SQL.90).aspx – curtisk

+0

@curtisk: Merci. Appris quelque chose de nouveau aujourd'hui :) – shahkalpesh

Répondre

2

La syntaxe correcte pour some consiste à utiliser une sous-requête.

select * from vntreat where vn = some(select '482') 

Dans le cas des valeurs codées en dur que vous voulez juste utiliser = ou in:

--Get the rows where vn is '482': 
select * from vntreate where vn = '482' 

--Get any of the rows that have vn equal to '480', '482', or '485' 
select * from vntreat where vn in ('480', '482', '485') 
1

+1 SQL obscure cool .... Merci curtisk ...

De les liens, il semble que SOME fonctionne sur une série de valeurs retournées et peut probablement être exprimé plus compréhensible comme «AU MOINS UN» ... l'utilisation ressemble à «IN» ...

Définitivement cool ...

1

Essayez SELECT * FROM VNTREAT OÙ VN = QUELQUES (Sélectionnez '482')

1
select custID from orders where regionID != "E" and discount > any (select discount from orders where regionID = "E" and discount > 3) 

Cette requête énumère les clients qui obtiennent des rabais plus que tout offert dans la région Est. Le qualificatif Any fonctionne exactement comme le In sauf qu'il autorise les opérateurs>,> =, <, < = ainsi que les opérateurs = (In) et! = (Not In). Ainsi, dans notre exemple, la sous-requête génère une liste de toutes les réductions dans l'Est supérieure à la réduction standard de 3%. Nous comparons ensuite toutes les autres régions - regionID! = "E" - pour voir si l'un des rabais est supérieur à tout rabais dans l'Est. Cela indique à notre directeur des ventes quels clients obtiennent des rabais dans d'autres régions du pays, plus élevés que ceux offerts dans l'EST, où une promotion spéciale et des rabais sont offerts.